有没有办法在一行中填充矢量地图
Is there a way to fill a map of vector in one line
我正在填充矢量地图,我想知道是否有一种方法可以在一行中完成,而不是创建一个临时变量。我正在这样做 :
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++ 好奇心:)
提前致谢。
std::map<std::string, std::vector<AnEnum>> myMap;
myMap.insert(std::make_pair("key", std::vector{AnEnum{}}));
和
myMap["key"]= std::vector{AnEnum{}};
使用 brace-initialisation(C+11 起)你可以这样做:
myMap["key"] = { AnEnum{} };
这将隐式创建一个向量,其中包含键 "key"
的 1 AnEnum
个元素。如果需要,您可以通过用逗号分隔更多元素(例如 { AnEnum{}, AnEnum{} }
)来拥有更多元素。
如果需要,您还可以使用大括号初始化一次性创建整个地图:
std::map<std::string, std::vector<AnEnum>> mymap = {
{ "key1", { AnEnum{} } },
{ "key2", { AnEnum{} } }
};
我正在填充矢量地图,我想知道是否有一种方法可以在一行中完成,而不是创建一个临时变量。我正在这样做 :
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++ 好奇心:)
提前致谢。
std::map<std::string, std::vector<AnEnum>> myMap;
myMap.insert(std::make_pair("key", std::vector{AnEnum{}}));
和
myMap["key"]= std::vector{AnEnum{}};
使用 brace-initialisation(C+11 起)你可以这样做:
myMap["key"] = { AnEnum{} };
这将隐式创建一个向量,其中包含键 "key"
的 1 AnEnum
个元素。如果需要,您可以通过用逗号分隔更多元素(例如 { AnEnum{}, AnEnum{} }
)来拥有更多元素。
如果需要,您还可以使用大括号初始化一次性创建整个地图:
std::map<std::string, std::vector<AnEnum>> mymap = {
{ "key1", { AnEnum{} } },
{ "key2", { AnEnum{} } }
};