我对 vector 中的for_each有疑问,代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct myclass {
void operator() (int i) {cout << " " << i;}
} myobject;
int main () {
vector<int> myvector(3,4);
cout << "\nmyvector contains:";
for_each (myvector.begin(), myvector.end(), myobject);
cout << endl;
return 0;
}
for_each()的第三个参数应该是函数名称吗?
如果我们传递该结构的名称,它将如何工作?
最佳答案
这是一个functor。std::for_each
是一个功能模板,基本上扩展为:
for (iter = myvector.begin(); iter != myvector.end(); ++iter)
{
myobject(*iter);
}
因此
myobject
可以是函数指针,也可以是operator()
重载的对象。