我是functor的新手。任何人都可以向我解釋,在下面的代碼中,程序何時爲Vector的每個元素創建AddValue類的對象?對我來說,for_each()函數應該做的是先從vec中獲取一個元素,然後使用該值創建一個新的AddVal obj(obj.i = value),然後調用函數AddVal(20)將20添加到i中並打印出來。但是我沒有看到創建新對象的過程在哪裏發生。謝謝你。C++ stl for_each()和functor,它在哪裏創建新對象
#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));
}
這聽起來像功課:(從何而來的代碼,你做了什麼你自己去了解它 –