我对 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()重载的对象。

09-04 09:06
查看更多