命名空间std没有成员bind1st?

时间:2014-11-13 15:15:41

标签: c++ foreach stl

我有一个奇怪的错误,试图对指针向量使用for_each迭代 我想在每个指针上调用一个方法

objects_的类型为vector<someClass*>

for_each(objects_.begin(), objects_.end(), std::bind1st(std::mem_fun(&someClass::someMethod), this));

但这甚至无法编译,因为:

error C2039: 'bind1st' : is not a member of 'std'
error C2039: 'mem_fun' : is not a member of 'std'
error C3861: 'bind1st': identifier not found
error C3861: 'mem_fun': identifier not found

然而,其他stl algortihms和方法正常工作。

我错过了什么吗?

1 个答案:

答案 0 :(得分:7)

std::bind1ststd::mem_fn位于<functional>标题中,只要您包含该文件,您的翻译单元就会显示:

#include <functional>

此外,请注意std::bind1st 已弃用,您应该使用lambda表达式或更通用的std::bind