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 が各 Person ペアを参照または値で渡すことですか? 私自身のものを使う価値はありますか、これは少しきれいです。
それに加えて、bind1st の代わりに boost::bind または std::bind (c++11) を使用したい場合、どうすればよいですか? この関数は、std::unary_function を継承する operator() を持つ構造体のようにする必要がありますか?