Я считаю себя писать код, который выглядит так много:Проверка списков и запуск обработчики
set<int> affected_items;
while (string code = GetKeyCodeFromSomewhere())
{
if (code == "some constant" || code == "some other constant") {
affected_items.insert(some_constant_id);
} else if (code == "yet another constant" || code == "the constant I didn't mention yet") {
affected_items.insert(some_other_constant_id);
} // else if etc...
}
for (set<int>::iterator it = affected_items.begin(); it != affected_items.end(); it++)
{
switch(*it)
{
case some_constant_id:
RunSomeFunction(with, these, params);
break;
case some_other_constant_id:
RunSomeOtherFunction(with, these, other, params);
break;
// etc...
}
}
Причиной я заканчиваю писать этот код является то, что мне нужно работать только функцию во втором цикле один раз даже если я получил несколько кодов клавиш, которые могут привести к их запуску.
Это не похоже на лучший способ сделать это. Есть ли более аккуратный способ?
Мне нравится идея списка дел. – 2008-10-28 03:29:34