有没有办法在一行中填充矢量图

Is there a way to fill a map of vector in one line

提问人:Dark Patate 提问时间:7/5/2020 更新时间:7/5/2020 访问量:810

问:

我正在填充向量图,我想知道是否有办法在一行中完成,而不是创建一个临时变量。我正在这样做:

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

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

我试着这样做

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

但 Visual 把它涂成了红色。我在C++中找不到做到这一点的好方法。我会知道 ,但这会为我创建一个指针。这并不重要,但我C++好奇心:)new

提前致谢。

C++ 字典 向量 std

评论


答:

1赞 asmmo 7/5/2020 #1
std::map<std::string, std::vector<AnEnum>> myMap;
myMap.insert(std::make_pair("key", std::vector{AnEnum{}}));

myMap["key"]= std::vector{AnEnum{}};
2赞 jignatius 7/5/2020 #2

使用大括号初始化(从 C+11 开始)您可以执行以下操作:

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

这将隐式创建一个包含 1 个元素的向量。如果需要,您可以通过使用逗号分隔的更多元素(例如)来拥有更多元素。AnEnum"key"{ AnEnum{}, AnEnum{} }


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