как использовать std :: accummulate в c ++ для вычисления кубов суммы - PullRequest
0 голосов
/ 14 июля 2020

Предположим, у меня есть диапазон, в котором я хочу вычислить сумму кубов каждого элемента, например, для [1,2,3] Я хочу:

1 3 + 2 3 + 3 3 = 36

Как мне сделать это, используя std::accummulate(), где мне нужно было бы написать свою собственную двоичную функцию? У меня есть:

std::accummulate(iterator to beginning,
                 iterator to end of range,
                 0.0,
                 [](int i, int j) { return i*i*i + j*j*j; });

Но это почему-то не работает.

Вопрос получился странным, но в своем возвращении я просто умножаю i и j с себя 3 раза и прибавление.

1 Ответ

4 голосов
/ 14 июля 2020

Как обычно, CppReference - ваш друг.

Вместо того, чтобы складывать текущую сумму и новое значение, вы должны добавить текущую сумму в куб нового значения.

std::accumulate(first, last, 0, [](int sum, int value) 
                 { return sum + (value*value*value); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...