哪个是初始化std :: map的最佳方法,它的值是std :: vector?

时间:2014-10-18 12:03:50

标签: c++ c++11 vector map stl

我有以下内容:

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);
}

有没有更好的方法来添加价值?

由于

2 个答案:

答案 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