Я пытаюсь создать функцию lambda
, которая принимает 2 параметра, возвращает их сумму и передает эту функцию в цикл for_each
, чтобы сложить каждые 2 элемента.
Но поскольку for_each
позволяет функции работать с текущим элементом, я не могу добавить текущий и следующий элемент вместе!
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector <int> v = {1, 2, 4, 54 ,64, 32, 43, 3};
auto add = [](int x, int y) {cout << (x+y) << endl;};
for_each(v.begin(), v.end(), add);
}
Но это дает ошибку, я попытался обработать это вручную:
vector <int> v = {1, 2, 4, 54 ,64, 32, 43, 3};
auto add = [](auto x) {auto s = x + *(&x+1); //adding the current element and the next elemnt.
cout << s << endl;};
for_each(v.begin(), v.end(), add) ;
вывод:
7077509
7077510
7077512
7077562
7077572
7077540
7077551
7077511
Я не знаю, откуда взялся этот дополнительный 7077508
номер! и это не будет работать, если контейнер не является ассоциативным.
Итак, как сделать так, чтобы эта add
функция принимала 2 параметра.