我有以下内容:
std::map<std::string, std::vector<std::string>> container;
要添加新项目,请执行以下操作:
void add(const std::string& value) {
std::vector<std::string> values;
values.push_back(value);
container.insert(key, values);
}
有没有更好的方法来添加价值?
由于
答案 0 :(得分:5)
首先,std::map
保留std::pair
的键值。你需要插入其中一对:其次,你不需要制作临时载体。
container.insert(make_pair(key, std::vector<std::string>(1, value)));
您可以使用大括号括起来的初始化器来表达上述内容:
container.insert({key, {value}});
请注意,std::map::insert
只有在没有具有相同键的元素时才会成功。如果要覆盖现有元素,请使用operator[]
:
container[key] = {value};
答案 1 :(得分:4)
使用初始化列表(C ++ 11),您可以container.insert({key, { value }});
{value}
构建std::vector
,{key, {value}}
将构建std::pair