有没有一种方法可以在一行中填写矢量地图

时间:2020-07-05 07:23:15

标签: c++ dictionary vector std

我正在填写矢量地图,我想知道是否有一种方法可以一行完成它,而不是创建一个临时变量。我正在这样做:

map<string, vector<AnEnum> > myMap;
AnEnum tempEnum;

vector<AnEnum> tempList; tempList.push_back(tempEnum);
myMap["key"] = tempList;

我试图这样做

myMap["key"] = vector<AnEnum>(tempEnum);

但是Visual将其标记为红色。我找不到在C ++中做到这一点的好方法。我会用new知道的,但这会为我创建一个指针。这并不关键,但是我的C ++好奇心:)

谢谢。

2 个答案:

答案 0 :(得分:2)

使用brace-initialisation(自C + 11起),您可以这样做:

myMap["key"] = { AnEnum{} };

会隐式创建一个包含1个AnEnum元素的向量,用于键"key"。如果需要,可以通过用逗号分隔更多元素(例如{ AnEnum{}, AnEnum{} })来获得更多元素。


如果需要,还可以使用大括号初始化一次创建整个地图:
std::map<std::string, std::vector<AnEnum>> mymap = {
        { "key1", { AnEnum{} } },
        { "key2", { AnEnum{} } }
    };

答案 1 :(得分:1)

std::map<std::string, std::vector<AnEnum>> myMap;
myMap.insert(std::make_pair("key", std::vector{AnEnum{}}));

myMap["key"]= std::vector{AnEnum{}};