У меня есть карта определяется как:Вне диапазона при создании вектора
map<std::string,std::vector<string> > followers
где строка относится к имени пользователя, а вектор строк на те, что имя пользователя следующим образом. Таким образом, для добавления нового последователя, я сделал этот код:
std::vector<string> following = followers.at(recvbuf_usrn);
following.push_back(recvbuf_usrn2);
followers[recvbuf_usrn] = following;
где recvbuf_usrn
определяется как std::string recvbuf_usrn
так recvbuf_usrn2
При отладке, я получаю сообщение об ошибке в
std::vector<string> following = followers.at(recvbuf_usrn);
Ошибка:
Unhandled exception at at 0x779BDAD8 in Server.exe: Microsoft C++ exception: std::out_of_range at memory location 0x0018F4A0.
Я попытался сделать map<std::string,std::vector<string *> > followers
, но безуспешно. Что я мог сделать? Лучше ли использовать вектор или список?
Вопросы, требующие помощи по отладке («** почему этот код не работает? **») должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для его воспроизведения ** в самом вопросе ** , Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – Biffen
Похоже, что 'std :: out_of_range' исходит от * карты *' at'. У 'последователей' есть запись для' recvbuf_usrn'? – Biffen
Вы правы. У него не было записи. Я сделал запись для другой карты, но этот был пуст. Благодаря! – Zarauztarra