вставка значений в карту с помощью указателя карты в C ++ - PullRequest
0 голосов
/ 12 июня 2018

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

map<int, vector<int>> *m;
vector<int> v;
v.push_back(100);
(*m)[0] = v

Приведенный выше код вызывает ошибку сегментации. Я также пытался это сделать.

map<int, vector<int>> *m;
map<int, vector<int>> m1 = *m;
vector<int> v;
v.push_back(100);
m1[0] = v;

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Кажется, здесь есть несколько проблем.

Во-первых, вы не знаете, как работать с указателями, поэтому я рекомендую вам немного почитать.

Во-вторых, вам не нужнобеспокоиться об указателях, так как вектор или карта будут управлять памятью для вас.

Если вы думаете о векторе как о сохранении последовательности значений, а о карте - как о ключе для поиска, который дает вам доступ кзначение, тогда, вероятно, будет лучше, если вы объясните, что вы пытаетесь достичь.

Вы пытаетесь решить проблему, или просто поиграться с указателями, векторами и картами?

Есть многоисточники для обучения C ++, но если вы используете Visual Studio, вы можете взять отсюда рабочий обучающий код C ++ и играть на своем локальном компьютере.https://gitlab.com/cppocl/training/

0 голосов
/ 12 июня 2018

В обоих примерах m является неинициализированным указателем, который не указывает на действительный map объект.Вот почему код падает, когда m разыменовывается, чтобы сделать что-то.

Попробуйте вместо этого:

map<int, vector<int>> m1;
map<int, vector<int>> *m = &m1;
vector<int> v;
v.push_back(100);
(*m)[0] = v;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...