将数组值添加到std :: multimap

时间:2012-02-13 23:20:40

标签: c++ multimap

我正在尝试使用带有整数键的多图和由2个元素组成的整数数组的值。

typedef std::multimap<int,int[2]> reverseHeightMap;
reverseHeightMap container;

当我尝试添加这样的值时:

container.insert( std::pair<int,int[2]>(5,{1,2}) );

我明白了:

error C2143: syntax error: missing ')' before '{'

我无法确定我是否未能定义数据结构或插入值,或两者兼而有之。在此先感谢您的帮助:)

2 个答案:

答案 0 :(得分:8)

您无法在容器中存储数组,因为存储在STL容器中的数据类型的要求之一是它们是可分配的;数组不可分配。

考虑使用std::vectorstd::array<int, 2>

答案 1 :(得分:5)

使用std::pair

typedef std::multimap<int,std::pair<int,int>> reverseHeightMap;

或:

在struct:

中封装int [2]
struct int_2
{
    int i_0;
    int i_1;
};

typedef std::multimap<int,int_2> reverseHeightMap;