gpt4 book ai didi

c++ - 将 vector 放入 map

转载 作者:行者123 更新时间:2023-11-30 05:38:26 24 4
gpt4 key购买 nike

我的 map : map <string, vector<vector<string> > >.映射键是用户名。 vector<vector<string> > >用于存储用户收到的所有消息。 vector<string>用于存储每条有主题、数据等的消息。

现在我想添加 vector<vector<string> > >进入我的 map 。我的代码:

vector<vector<string> > messageList;
vector<string> eachMessage;
if(messageMap.find(name)==messageMap.end()) //to see if an user has already been put into the map
{
messageMap.insert( pair<string, vector<vector<string> > >(name,messageList)); // create a new map

eachMessage.push_back(subject); // add information
eachMessage.push_back(totalMessage);
messageList.push_back(eachMessage);// put each message into the messageList
}
else
{
eachMessage.push_back(subject);
eachMessage.push_back(totalMessage);
messageMap.find(name)->second.push_back(eachMessage);
}

但是,这段代码无法为每个用户正确放置消息信息。我在这里遗漏了什么吗?

最佳答案

如果您使用 []运算符,如果它不存在,它会自动创建一个新条目,这意味着你不需要你的大 if() .您可以将代码缩减为:

messageMap[name].push_back(vector<string>()); // new message
messageMap[name].back().push_back(subject); // add entries to the message
messageMap[name].back().push_back(totalMessage);

记住messageMap[name]将创建一个新的 vector<vector<string> >如果那个还不存在name 重复使用已有的。

.emplace_back()添加一个新的 vector<string>到那个 vector 的后面。

.back()访问 vector<string>你刚刚在后面做的。

注意:正如@NeilKirk 在评论中所说,您可以通过引用 map 元素来提高效率,这样就不需要每次都查找它了:

auto& messageList = messageMap[name]; // retrieve or create message list
messageList.push_back(vector<string>()); // new message
messageList.back().push_back(subject); // add entries to the message
messageList.back().push_back(totalMessage);

关于c++ - 将 vector 放入 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793035/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com