Просуммировать элементы
std::vector<int>
. Си++.
Процедурный
int sum = 0;
for (int v : vec)
sum += v;
std::cout << sum << std::endl;
ООП.
class Accumulator
{
public:
void feed(int value) { fSum += value; }
int sum() const { return fSum; }
private:
int fSum = 0;
}
Accumulator acc;
for (int v : vec)
acc.feed(vec);
std::cout << acc.sum() << std::endl;
Функциональный (правда, слегка настоянный на шаблонах)
int sum = std::accumulate(vec.begin(), vec.end(), 0);
std::cout << sum << std::endl;
UPD. Третий такой маленький, потому что в стандартной библиотеке нашли подходящую функцию.
UPD2. А теперь представьте себе, что нужно вычислять не сумму, а что-то сложное — например, среднее и квадратичное отклонение. В процедурном придётся или раскрывать сложные формулы, или налаживать какие-то обобщения. Объектное меняется на раз-два. В функциональном придётся менять функцию-шаблон, работающую над итератором.