PDA

Просмотр полной версии : Обобщенная арифметика/вычисления.



versus
15.11.2004, 17:53
Что такое $subj? Страуструп и Буч что-то говорят об этом, но ни у них, ни у гугла конкретики найти не удалось. Кто-нибудь может подкинуть ссылку - почитать про этого зверя?

Romeo
15.11.2004, 18:04
Если честно, то я не понял даже из какой это области.

versus
15.11.2004, 18:07
Ну, очевидно, это каким-то образом связано с полиморфизмом, механизмом шаблонов в С++.
Тот же Буч пишет:

http://www.krasu.ru/server/docs/buch/ch03.htm


Параметризованные классы полезны далеко не только для создания контейнеров. Например, Страуструп отмечает их значение для обобщенной арифметики [48].

Kolinus
15.11.2004, 18:23
Так вопрос сводится к тому что такое и зачем нужны параметризованные классы ?

versus
15.11.2004, 18:39
нет, вопрос сводится к тому что такое обобщенная арифметика.
неужели речь идет о банальной функции принимающей некоторый параметризированный список (обобщение) и производящая над ним некоторые вычисления (арифметика), типa:



#include <vector>
#include <iostream>
using namespace std;

template <class T>
T sum(vector<T>& vec)
{
T res = T();

for (int i = 0; i < vec.size(); i++)
res += vec[i];

return res;
}

int main()
{
vector<int> vec(10);

for (int i = 0; i < vec.size(); i++)
vec[i] = i;

cout << sum(vec);

return 0;
}

?

Но это же всего навсего шаблонная функция, не более того. Зачем вдруг понадобилось вводить новый термин (обобщенная арифметика/вычиление)

Romeo
15.11.2004, 18:40
Извеняюсь, просто не сразу понял что обозначает символ "$subj". По теме могу посоветовать хорушую книгу "Effective C++ Second Edition" by Scott Meyers, на английском, разумеется. Электронного варианта не встречал. Также отвечу на любые конкретные вопросы.

Romeo
15.11.2004, 18:44
Нет, здесь не в шаблонах дело, а скорее в невных преобразованиях типов и квалификаторе explicit :)