C++ 创建向量时超出范围

C++ 创建向量时超出范围,c++,string,dictionary,vector,C++,String,Dictionary,Vector,我将地图定义为: map<std::string,std::vector<string> > followers 错误: < Server.exe 0x79BDAD8的未处理异常:微软C++ 异常:std::超出内存位置0x0018F4A0处的_范围 我试图制作地图追随者,但没有成功。我能做什么?使用向量还是列表更好?该对象似乎不存在于向量中at要求它已经存在。您可能需要的是运算符[],因此请尝试更换: std::vector<string> followi

我将地图定义为:

map<std::string,std::vector<string> > followers
错误:

< Server.exe 0x79BDAD8的未处理异常:微软C++ 异常:std::超出内存位置0x0018F4A0处的_范围


我试图制作
地图追随者
,但没有成功。我能做什么?使用向量还是列表更好?

该对象似乎不存在于向量中<代码>at要求它已经存在。您可能需要的是
运算符[]
,因此请尝试更换:

std::vector<string> following = followers.at(recvbuf_usrn);
std::vector following=followers.at(recvbuf_usrn);

std::vector&following=followers[recvbuf_usrn];
还请注意,我添加了
&
,因为如果不是这样,您只需处理向量的副本,这可能不是您想要的


还要注意Jarod42的注释,它使您的代码更加精简。

寻求调试帮助的问题(“为什么这段代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。看起来
std::out_of_range
来自地图的
at
followers
recvbuf\u usrn
的条目吗?你是对的。它没有任何条目。我输入了另一张地图,但这张地图是空的。谢谢(OT:不应该是
map
?)
followers[recvbuf_usrn]=following了。代码甚至可以写成
followers[recvbuf\u usrn].push\u back(recvbuf\u usrn2)此解决方案相当好。问题是地图是空的,但是为了推回一个元素,我得到了一个副本,推回该副本,然后从地图中的原始元素替换它。有了这个解决方案,我就避免了这最后一步。谢谢
std::vector<string> following = followers.at(recvbuf_usrn);
std::vector<string> following = followers.at(recvbuf_usrn);
std::vector<string>& following = followers[recvbuf_usrn];