Я новичок в функторе. Может ли кто-нибудь объяснить мне в следующих кодах, когда программа создает объекты для класса AddValue для каждого элемента вектора? Для меня то, что должна сделать функция for_each(), это сначала получить элемент из vec, а затем создать новый объект AddVal obj, используя это значение (obj.i = value), а затем вызвать функтор AddVal (20), чтобы добавить 20 к i и распечатать его. Но я не видел, где происходит процесс создания новых объектов. Спасибо.C++ stl for_each() и функтор, где он создает новые объекты
#include<iostream>
#include<vector>
#include<algorithm>
class AddVal{
public:
int i;
AddVal(int x) : i(x) {}
void operator() (int val) {std::cout << val+i << std::endl;}
};
int main()
{
std::vector<int> vec = {1,2,3,4,5};
for_each(vec.begin(),vec.end(),AddVal(20));
}
Это звучит как домашнее задание :(Где код пришел, и то, что вы сделали сами, чтобы понять это –