我有一个带有一对 std::string 和 Person 指针的测试图
class MyMap {
public:
void clear() {
std::for_each(people.begin(), people.end(),std::bind1st(std::mem_fun(&MyMap::remove), this));
}
void remove(std::pair<std::string, Person*> p) { delete p.second; }
private:
std::map<name, Person*> people;
};
我的问题是 for_each 是否通过 ref 或 value 传递每个 Person 对?值得用我自己的吗,这个比较干净。
除此之外,如果我想使用 boost::bind 或 std::bind (c++11) 而不是 bind1st,我该怎么做?这个函数是否应该像具有继承 std::unary_function 的 operator() 的结构?