4 c++ foreach struct stl vector
我有关于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;
}
Run Code Online (Sandbox Code Playgroud)
应该for_each()的第三个参数是函数名吗?如果我们传递结构的名称,这是如何工作的?
这是一个算符.
std::for_each 是一个功能模板,基本上扩展到这个:
for (iter = myvector.begin(); iter != myvector.end(); ++iter)
{
myobject(*iter);
}
Run Code Online (Sandbox Code Playgroud)
因此myobject可以是函数指针,也可以是具有重载的对象operator().