2013-05-15 4 views
-2

В моем коде есть странная ошибка, которая сбой при звонке dijkstra(cont). «cont» - это карта, объявленная как map<string, poz> cont;, где poz - мой собственный класс, а функция - void dijkstra(map<string, poz> cont). Я попытался передать контейнер в качестве ссылки и так далее, но он не сделал никакого эффекта.Assertion failed- map/set iterators несовместимы

+1

Какой вопрос вы пытаетесь спросить? – nogard

+0

Угадайте, я не прояснил ситуацию. Я спрашиваю, есть ли какая-то ошибка в том, что я опубликовал, потому что моя программа продолжает сбой при вызове функции dijkstra. – user2221390

+0

Вы не разместили достаточно ничего, чтобы сказать, есть ли ошибка. Можете ли вы показать минимальный компилируемый пример (просто вытащите _everything_, который не требуется для воспроизведения проблемы)? – Useless

ответ

1

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

Try проходя по ссылке, вместо:

void dijkstra(map<string, poz> & cont) 
+0

Хотя это не является прямым решением, ваш ответ помог мне узнать, что действительно не так в коде, спасибо! – user2221390

Смежные вопросы