|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2011, 00:55 | #1 |
Пользователь
Регистрация: 20.12.2011
Сообщений: 11
|
Проблема с map
Если кратко - решаю задачу с UvaOnlineJudge, пользуюсь массивом листов и мэпом. Есть несколько аналогичных методов в которых у меня всё работает, в одном методе возникает непонятная мне проблема.
Код:
Код:
Код:
При этом судя по дебагеру краш происходит в строке объявления цикла Последний раз редактировалось Anarios; 20.12.2011 в 01:00. |
20.12.2011, 02:55 | #2 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
есть подозрение, что результатом "myMap[b] " является нечто неприемлемое в выражении v[myMap[b]].push_back(*it);
|
20.12.2011, 03:00 | #3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
хотя... неееет....
myMap[*it] = myMap[b]; //проверь, существует ли myMap[b] И вообще, если ключ не существует, создаётся новый элемент. Но при этом что нить возвращается? |
20.12.2011, 04:12 | #4 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Все правильно дебагер показывает. Падает здесь: it != v[myMap[a]].end().
Потому что после myMap[*it] = myMap[b], на след итерации цикла myMap[a] меняется на myMap[b]. Значит v[myMap[a]] будет уже другим контейнером. А сравнивать итераторы разных контейнеров - epic fail. |
20.12.2011, 04:20 | #5 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
|
|
20.12.2011, 04:26 | #6 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Причем тут it? Меняется мэп. А именно раньше там по ключу "а" лежало одно значение, а потом мы туда положили myMap[b] - поэтому на след итерации мы вытаскиваем уже другой список.
|
20.12.2011, 04:31 | #7 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
|
20.12.2011, 11:29 | #8 |
Пользователь
Регистрация: 20.12.2011
Сообщений: 11
|
Да, спасибо большое, вчера в пять утра и сам заметил что в цикле меняю мэп который на следующей итерации использую для сравнения.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++ map | Filipa | Помощь студентам | 1 | 13.01.2011 12:07 |
проблема с пониманием map | Amadeo | Общие вопросы C/C++ | 1 | 08.04.2010 15:01 |
Map | Chartvit | Общие вопросы C/C++ | 1 | 01.12.2009 19:22 |
map | Vladimir_D | Общие вопросы C/C++ | 1 | 17.10.2009 13:37 |