我有一张地图,我想在其中对每个数据类型对象成员函数执行调用。我还知道如何在任何序列上执行此操作,但是是否可以在关联容器上执行此操作?
我能找到的最接近的答案是:Boost.Bind to access std::map elements in std::for_each。但是我不能在我的项目中使用 boost 那么,是否有我缺少的 STL 替代方案来 boost::bind?
如果不可能,我想为指向数据对象的指针创建一个临时序列,然后在其上调用 for_each,如下所示:
class MyClass
{
public:
void Method() const;
}
std::map<int, MyClass> Map;
//...
std::vector<MyClass*> Vector;
std::transform(Map.begin(), Map.end(), std::back_inserter(Vector), std::mem_fun_ref(&std::map<int, MyClass>::value_type::second));
std::for_each(Vector.begin(), Vector.end(), std::mem_fun(&MyClass::Method));
它看起来太模糊了,我真的不喜欢它。有什么建议么?