Добавление значений массива в std :: multimap - PullRequest
7 голосов
/ 14 февраля 2012

Я пытаюсь использовать мультикарту с целочисленным ключом и значениями из массива целых чисел с 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 ]

8 голосов
/ 14 февраля 2012

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

Попробуйте использовать std::vector или std::array<int, 2>.

5 голосов
/ 12 декабря 2012

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

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

ИЛИ:

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

struct int_2
{
    int i_0;
    int i_1;
};

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