创建向量

时间:2016-04-09 10:11:29

标签: c++ string dictionary vector

我的地图定义为:

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_usrnrecvbuf_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但未成功。我能做什么?使用矢量或列表是否更好?

1 个答案:

答案 0 :(得分:1)

对象似乎不存在于您的矢量中。 at必须已经存在。您可能想要的是operator[],因此请尝试替换:

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

std::vector<string>& following = followers[recvbuf_usrn];

请注意,我添加了&,因为否则您只会处理该向量的副本,这可能不是您想要的。

另请注意Jarod42的评论,这使您的代码更加精简。