我对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()
的对象。
关于c++ - 关于c++ vector中for_each的一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547664/