すべてのデータ型オブジェクトメンバー関数で呼び出しを実行したいマップがあります。私はまだどのシーケンスでもこれを行う方法を知っていますが、連想コンテナでそれを行うことは可能ですか?
私が見つけた最も近い答えはこれでした:std::for_eachのstd::map要素にアクセスするためのBoost.Bind。しかし、私のプロジェクトではブーストを使用できないので、boost :: bindに欠けているSTLの代替手段はありますか?
不可能な場合は、データオブジェクトへのポインターの一時シーケンスを作成してから、次のように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));
それはあまりにも曖昧に見え、私はそれが本当に好きではありません。助言がありますか?