5

使用 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;

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

4

2 回答 2

4

虽然使用insert如其他答案所示更有效,但您也可以使用

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

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

于 2013-03-31T21:56:37.580 回答
2

您可以像这样保存一行(虽然字符不多):

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

顺便说一句,根据 GCC 4.7.2,您在初始化程序周围缺少一对大括号tempArray

myString但是,如果它碰巧已经存在,这不会修改映射值。

如果并且当您有一个具有std::map::emplace的库时,您可以保存更多字符。

于 2013-03-31T21:42:26.087 回答