c++ - 为集合中的每个元素调用带有多个参数的函数

标签 c++ c++11 c++14

我有一个集合,例如std::vector<MyClass> elements;并希望为每个元素运行一个函数。

当函数没有参数时,它简单明了:std::for_each(elements.begin(), elements.end(), std::mem_fun(&MyClass::MyFunction));

当函数有 1 个参数并且我需要使用 std::bind_2nd 时,代码开始变得难看.

有没有办法(也许,使用 lambdas)来编写带有多个参数的函数调用?

最佳答案

你的代码

std::for_each(v.begin(), v.end(), std::mem_fun(&MyClass::MyFunction));

相当于

std::for_each(v.begin(), v.end(), [](auto& obj) { obj.MyFunction(); });

现在 MyFunction 的调用已在您的代码中完成,您可以根据需要将其他参数传递给它:

std::string arg1 = "hello";
int arg2 = 123;
std::for_each(v.begin(), v.end(), [&](auto& obj) { obj.MyFunction(arg1, arg2); });

Demo.

关于c++ - 为集合中的每个元素调用带有多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521921/

相关文章:

C++ 将参数包传递给类

C++(14)——googletest未定义标识符

c++ - -fno-inline 和编译时间

像python的 'groupby'这样的C++算法

c++ - 为可变参数模板添加的新语法实体的名称是什么?

c++ - avr-gcc 上的自动释放

c++ - 由于 ifstream obj 导致的段错误。作为引用发送?

c++ - Ubuntu 12.04 C++11 代码不工作

c++ - 我在笔记本电脑上找不到文件夹 C :\Program Files (x86)\Microsoft Visual Studio 14. 0\VC\include\gl。我该如何添加它?

c++ - 使用自动循环时代码崩溃