Как бы я инициализировал массив карт в C ++? - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь инициализировать массив карт в C ++, и у меня возникли проблемы.

Я бы хотел, чтобы каждый элемент массива содержал целое число (ключ) и строку (значение), пару, поэтому я подумал, что массив карт будет хорошей идеей, но у меня возникли проблемы с выяснением как инициализировать.

map <int, string> * myArray; 

работает, но не работает следующее:

myArray = new map <int, string> [10];

и я не уверен почему.

Мне не удалось найти ссылки на это, так как я стремлюсь использовать массив в своем коде, а не Vector, который гораздо более хорошо документирован. Буду признателен за любые рекомендации.

1 Ответ

1 голос
/ 12 мая 2019

Код, который вы разместили, в порядке и должен компилироваться.

map <int, string> * myArray = new map<int, string>[10];

Это значение по умолчанию создает 10 карт в куче, но вы сказали в вопросе, что вы хотите, чтобы каждый элемент вашего ARRAY содержал ключ иценность.Пожалуйста, обратите внимание, что карты не являются массивами, и их реализация и использование сильно различаются.

Я думаю, что то, что вы можете искать, это

pair<int, string>* myArray = new pair<int, string>[10];
// or alternatively
vector<pair<int, string>> myArray(10);
...