Добавление значений массива в std::multimap, в

Я пытаюсь использовать 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 ответов


вы не можете хранить массивы в контейнерах, потому что одно из требований к типам данных, хранящимся в контейнерах STL, заключается в том, что они назначаются; массивы не назначаются.

рассмотрите возможность использования std::vector или std::array<int, 2>.


использовать std::pair:

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

или :

инкапсулировать int[2] в struct :

struct int_2
{
    int i_0;
    int i_1;
};

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