Реализовать вектор карты на c

#c

#c #c

Вопрос:

Я хочу использовать вектор карты в c . У меня есть список отображенных значений, которые я хочу сохранить как карту в векторе. Мое требование выглядит примерно так: 1. Для N столбцов у меня есть карта значений . 2. Я хочу сохранить карту для каждого i в N.

Я пытаюсь сохранить это в векторе >. Пожалуйста, дайте мне знать, как заставить это работать.

Я использую следующий код для добавления сопоставлений

 void fun() 
{
vector< map < string, int> > myVect;
myVect.push_back(new map< string, int> );
myVect.push_back(new map< string, int> );

map< string, int> entry1 = myVect[0];

entry1["ABC"] = 1;
entry1["DEF"] = 2;

map< string, int> entry2 = myVect[1];

entry1["ABC"] = 5;
entry1["RKD"] = 9;
}
  

Почему не работает?

Комментарии:

1. Что вы пробовали до сих пор? Кажется, у вас есть очень конкретное представление о том, чего вы хотите достичь, так в чем именно ваша проблема?

2. например: вектор<карта<строка, int> x; <br/> для создания записи я использую x.push_back(новая карта<строка, int>); <br/> Теперь, чтобы получить доступ к записи в vector, я использую map<строка, int> entry = x[i] и добавляю к нему значение карты в качестве entry.add()

3. Хорошо, похоже, у вас это работает. В чем ваша проблема?

4. @Rahul Я обновил свой ответ подробностями из вашего комментария. Ваше объявление структуры было в порядке, но при вставке была ошибка.

5. Вы вообще рассматривали свой вопрос, когда писали его? Вы заметили, что некоторые довольно важные его части отсутствуют? Вы заметили, что при задании вопроса боковая панель описывает, как форматировать код? Пожалуйста, когда вы задаете вопросы, постарайтесь сделать их читабельными. Если вы не можете потрудиться прочитать то, что написали сами, ожидаете ли вы, что это сделает кто-то другой? Код можно разметить, либо окружив его обратными метками ( ` ), либо сделав отступ на 4 пробела. Или просто выберите код и нажмите { } кнопку.

Ответ №1:

В вашем примере вы возвращаете значение с помощью указателя (через new ), а не с помощью ссылки const или значения. Ваше объявление «вектор карт» в порядке, но вставка вызывает ошибку компилятора.

Чтобы вставить карту в вектор, используйте форму:

 std::map<std::string,int> m;
// populate m if needed
x.push_back(m);
  

или просто

 x.push_back(std::map<std::string,int>());
  

если вы хотите вставить пустую карту.

Обратите внимание, что new здесь не требуется.

Ответ №2:

Джастин ответил на большую часть этого, но другая проблема заключается в:

 map< string, int> entry1 = myVect[0];
  

Это скопирует карту из вашего вектора. Вероятно, вместо этого вам нужна ссылка:

 map< string, int>amp; entry1 = myVect[0];