C++ std::for_每个成员函数都有一个参数

C++ std::for_每个成员函数都有一个参数,c++,foreach,std,C++,Foreach,Std,我想知道如何实现标题中所述的内容。我试过类似于 std::for_each(a.begin()、a.end()、std::mem_fun\u ref(&myClass::someFunc)) 但是我得到一个错误,即“term”(我假设它意味着第三个参数)不计算为具有一个参数的函数,即使someFunc只接受一个参数-存储在a中的对象类型 我想知道我所尝试的是否可以使用标准库(我知道我可以使用boost轻松地完成) 另外,与手动迭代a并将对象传递给someFunc相比,对每个和mem\u-fun\

我想知道如何实现标题中所述的内容。我试过类似于

std::for_each(a.begin()、a.end()、std::mem_fun\u ref(&myClass::someFunc))

但是我得到一个错误,即“term”(我假设它意味着第三个参数)不计算为具有一个参数的函数,即使
someFunc
只接受一个参数-存储在
a
中的对象类型

我想知道我所尝试的是否可以使用标准库(我知道我可以使用boost轻松地完成)


另外,与手动迭代
a
并将对象传递给
someFunc
相比,对每个
mem\u-fun\u-ref
使用
是否有任何性能影响?

我认为您需要使用bind\u-first来提供隐藏的“this”参数。或者您的意思是“this”参数是唯一的参数,someFunc没有自己的参数?

即使someFunc是具有一个参数的成员,mem\u fun\u ref也会使用隐式的“myClass”第一个参数。您希望使用向量的项作为第二个参数

使用for_each和mem_fun_ref可能不会对性能产生负面影响。编译器将生成类似的代码。但是,唯一确定的方法是基准测试:)


someFunc有一个参数。比如myClass::someFunc(someType)。我想我会使用BindSecond。现在我在考虑如何在迭代中指定使用当前元素。我想我还是用boost吧……不,还是用bind1st。mem_fun_ref成为一个具有两个参数的函数。第一个是MyClass,第二个是您的成员函数param。您想将mem\u fun\u ref的第一个参数绑定到您的类实例。@Person:如果要使用Boost,我建议您使用它们的foreach宏<代码>标准::for_each
只是一个失败的想法,通常会导致更分散、更难阅读的代码。
s/my_class/this/
。嘿,至少在C++03中,
for_each
节省了声明迭代器的过度繁琐。
  std::for_each(a.begin(), a.end(),
                std::bind1st(
                    std::mem_fun_ref( &MyClass::SomeFunc ),
                    my_class ));