Карта C++ завершается с ошибкой при доступе к 26-му ключу картыC++

Программы на C++. Форум разработчиков
Anonymous
 Карта C++ завершается с ошибкой при доступе к 26-му ключу карты

Сообщение Anonymous »

Я начинающий программист на C++, и для задачи Leetcode 168, где проблема заключается в преобразовании целого числа в буквенный формат столбца Excel, у меня есть карта для преобразования целого числа в строку. Однако каждый раз, когда он пытается получить доступ к 26-му ключу для «Z», он выдает следующую ошибку:

Код: Выделить всё

terminate called after throwing an instance of 'std::out_of_range'
what():  map::at
Ниже приведен мой код полностью:

Код: Выделить всё

class Solution {
public:

string convertToTitle(int columnNumber) {
string s;
while (columnNumber > 0) {
int r = columnNumber % 26;
s.insert (0, 1, intToChar(r));
columnNumber /= 26;
}
return s;
}
char intToChar(int i) {
map m;
m[1] = 'A';
m[2] = 'B';
m[3] = 'C';
m[4] = 'D';
m[5] = 'E';
m[6] = 'F';
m[7] = 'G';
m[8] = 'H';
m[9] = 'I';
m[10] = 'J';
m[11] = 'K';
m[12] = 'L';
m[13] = 'M';
m[14] = 'N';
m[15] = 'O';
m[16] = 'P';
m[17] = 'Q';
m[18] = 'R';
m[19] = 'S';
m[20] = 'T';
m[21] = 'U';
m[22] = 'V';
m[23] = 'W';
m[24] = 'X';
m[25] = 'Y';
m[26] = 'Z';

//        if (i == 26)
//            return 'Z';
return m.at(i);
}
};
Как видите, я попытался просто пропустить то место, где он пытался ссылаться на 26-й ключ, но все равно выдает ошибку. Однако он по-прежнему работает нормально, если нет тестовых случаев, в ответе которых была бы буква «Z».
Я не смог найти эту проблему в Интернете, поэтому надеюсь, что вы поможете мне разобраться в этом.
/>Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... y-of-a-map

Вернуться в «C++»