关于c ++向量中for_each的问题

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()的第三个参数是函数名吗?如果我们传递结构的名称,这是如何工作的?

Oli*_*rth 8

这是一个算符.

std::for_each 是一个功能模板,基本上扩展到这个:

for (iter = myvector.begin(); iter != myvector.end(); ++iter)
{
    myobject(*iter);
}
Run Code Online (Sandbox Code Playgroud)

因此myobject可以是函数指针,也可以是具有重载的对象operator().

  • @ratzip - 不要覆盖,只需定义和实现.override会暗示存在一个`virtual` base`操作符()`. (3认同)