У меня есть карта, где я бы хотел выполнить вызов для каждой функции члена объекта типа данных. Я еще не знаю, как это сделать в любой последовательности, но возможно ли это сделать в ассоциативном контейнере?
Самый близкий ответ, который я мог найти, это: Boost.Bind для доступа к элементам std:: map в 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));
Он выглядит слишком запутанным, и мне это не очень нравится. Любые предложения?