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

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

15 ноя 2004, 17:53

Что такое $subj? Страуструп и Буч что-то говорят об этом, но ни у них, ни у гугла конкретики найти не удалось. Кто-нибудь может подкинуть ссылку - почитать про этого зверя?
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

15 ноя 2004, 18:04

Если честно, то я не понял даже из какой это области.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

15 ноя 2004, 18:07

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

http://www.krasu.ru/server/docs/buch/ch03.htm
Параметризованные классы полезны далеко не только для создания контейнеров. Например, Страуструп отмечает их значение для обобщенной арифметики [48].
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

15 ноя 2004, 18:23

Так вопрос сводится к тому что такое и зачем нужны параметризованные классы ?
В SAD - все в SAD.
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

15 ноя 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
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

15 ноя 2004, 18:40

Извеняюсь, просто не сразу понял что обозначает символ "$subj". По теме могу посоветовать хорушую книгу "Effective C++ Second Edition" by Scott Meyers, на английском, разумеется. Электронного варианта не встречал. Также отвечу на любые конкретные вопросы.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

15 ноя 2004, 18:44

Нет, здесь не в шаблонах дело, а скорее в невных преобразованиях типов и квалификаторе explicit :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить