std::map
Прочитав ваш вопрос еще раз, я думаю, вы говорите, что у вас есть только 20 цифр для сопоставления (вы сказали 20 цифр, что заставило меня думать об очень больших числах). Если все они находятся в довольно небольшом диапазоне, вам лучше использовать массив. Вам нужен массив строковых указателей размером largestIndex - smallestIndex + 1
. Затем, чтобы получить строку, связанную с определенным числом, вы должны сделать что-то вроде:
std::string GetStatus(int statusID){
return statusArray[statusID - smallestIndex];
}
Переменная statusArray
инициализируется примерно так:
void SetStatus(int statusID, std::string description){
statusArray[statusID - smallestIndex] = description;
}
void InitStatuses(){
statusArray = new std::string[largestIndex - smallestIndex + 1];
SetStatus(1, "Request System Info");
SetStatus(2, "Change System Info");
SetStatus(10, "Unknown Error");
}
Это будет быстрее, чем map
, и довольно прост в использовании. Это просто не подходит, если ваши идентификаторы сильно различаются.