在std :: map中为std :: array分配多个值

时间:2013-03-31 21:16:42

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

使用std :: array时,我可以一次分配值:

std::array<int, 3> a2 = {1, 2, 3}; 

但是当上面的数组合并到地图中时,我不知道最好的方法:

using namespace std;
map <string, array<int, 3>> myMap;

//I'm doing it like below now...

array<int, 3> tempArray = {1,2,3}; // can I save this line somehow?
myMap[myString] = tempArray;

如果这是正确的方法,也请告诉我。谢谢!

2 个答案:

答案 0 :(得分:4)

虽然使用其他答案中显示的insert更有效,但您也可以使用

myMap["foo"] = {{1,2,3}};

如果简洁的代码对您更重要。

答案 1 :(得分:2)

您可以保存一行(但不是很多字符),如下所示:

myMap.insert(std::make_pair(myString,array<int,3>{{1,2,3}}));

BTW,根据GCC 4.7.2,您在tempArray

的初始值设定项周围缺少一对括号

但是,如果myString已经存在,则不会修改{{1}}的映射值。

如果您拥有一个拥有std::map::emplace的库,则可以保存更多字符。