3

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

std::for_each( a.begin(), a.end(), std::mem_fun_ref( &myClass::someFunc ) )

但我得到一个错误,说“术语”(我假设它意味着第三个参数)不会评估为具有 1 个参数的函数,即使someFunc确实采用一个参数 - 存储在a.

我想知道我正在尝试做的事情是否可以使用标准库(我知道我可以使用 boost 轻松完成)。

PS与仅手动迭代并将对象传递给相比,使用for_each并具有任何性能影响吗?mem_fun_refasomeFunc

4

2 回答 2

2

即使 someFunc 是具有一个参数的成员,mem_fun_ref 使用“myClass”的隐式第一个参数。您想使用向量的项目作为第二个参数。

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

  std::for_each(a.begin(), a.end(),
                std::bind1st(
                    std::mem_fun_ref( &MyClass::SomeFunc ),
                    my_class ));
于 2010-04-04T02:46:47.333 回答
1

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

于 2010-04-04T02:17:33.877 回答