我的地图定义为:
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);
错误:
Server.exe中0x779BDAD8处的未处理异常:Microsoft C ++ 异常:std :: out_of_range在内存位置0x0018F4A0。
我试图制作map<std::string,std::vector<string *> > followers
但未成功。我能做什么?使用矢量或列表是否更好?
答案 0 :(得分:1)
对象似乎不存在于您的矢量中。 at
必须已经存在。您可能想要的是operator[]
,因此请尝试替换:
std::vector<string> following = followers.at(recvbuf_usrn);
与
std::vector<string>& following = followers[recvbuf_usrn];
请注意,我添加了&
,因为否则您只会处理该向量的副本,这可能不是您想要的。
另请注意Jarod42的评论,这使您的代码更加精简。