Страницы

Поиск по вопросам

среда, 17 октября 2018 г.

Контейнер для констант

Есть список UnicodeString констант и соответствующий ему список целочисленных констант:
const UnicodeString ERR = L"Error"; const UnicodeString READY = L"Ready"; ... const int S_ERR = 0; const int S_READY = 1; ...
Не знаю, какой контейнер для хранения и удобной работы с этими данными использовать. Если использовать их отдельно, то получается крайне неудобно с ними работать, когда надо получать строку в зависимости от состояния и подобные действия:
switch (Status) { case S_ERR: return ERR; ... }
Какой контейнер можно использовать для этого? Очень важен ответ, часто использую такого рода логику.


Ответ

Раз у Вас есть ассоциативное отношение, то сам собой напрашивается ассоциативный контейнер, а именно: std::unordered_map
... const int S_ERR = 0; const int S_READY = 1; ... std::unordered_map strings; strings.emplace(S_ERR, L"Error"); strings.emplace(S_READY, L"Ready"); ... return strings[Status];
Это позволяет нам не задумывать о том, в каком порядке, что хранится и не пользоваться switch, который только раздувает код.

Комментариев нет:

Отправить комментарий