Этот вопрос относится к следующему заданному вопросу: Использование STL-карты указателей функций
В C ++ 11 я использую карту для хранения пары <string, function>
для более эффективно выполнять код вместо использования if...else if...else if
, как указано в ссылочной ссылке.
Код инкапсулирован в функцию-член, где this
относится к классу, что позволяет получить доступ к переменным-членам.
using f = std::function<void()>;
static const std::map<std::string, f> doSumthin{
{"case 1", [this]() {
// execute code in case 1
}},
{"case 2", [this]() {
// execute code in case 2
}},
…
};
auto it = doSumthin.find(someString);
if (it != doSumthin.end())
{
it->second();
}
Однако мне нужно, чтобы базовая часть кода работала в VS 2008. Я не уверен, какой самый оптимальный способ добиться репликации вышеуказанного кода для работы в VS 2008, не возвращаясь к менее эффективному if...else if
.
Могу ли я получить некоторые рекомендации по этому вопросу?