c++ - 关于c++ vector中for_each的一个问题

标签 c++ stl vector struct foreach

我对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/

相关文章:

c++ - 将使用 QML、QBS 构建的 Qt 应用程序部署到 Windows

c++ - 与派生类的虚指针混淆

c++ - 切片 std::array

c++ - 我的迭代器没有按照预期的方式工作

c++ - vector 调整大小行为复制和赋值

c++ - 如何通过分配器为 int a[10][10] 分配内存

c++ - std::vector::reserve 是否重新分配内部数组?

c++ - Windbg C++ 如何打印 vector 内容

c++ - 模板成员函数签名与非模板成员函数签名冲突

c++ - 用作一维的多维 vector 的迭代器?