У меня есть стек структур. Я нажимаю некоторые из них где-то в моих кодах, и когда я выхожу один, все значения, за исключением того, что член вектора правильно отображается. Вектор пуст, когда он не должен. (размер = 0) Почему он выталкивает пустой вектор из стека?
Я добавил часы для складывания. Когда структура находится в стеке, ее векторный член имеет размер = 2, хороший, но как только я нахожу структуру, векторный член становится пустым. Где я поступаю неправильно?
я нажимаю здесь:
if ((*current).ways.size() > 1){
p[(*current).number].ways_holder++;
djikstra.push(p[(*current).number]); //in case there are more than one way
}
и поп здесь:
else if ((*current).ways.size() == (*current).ways_holder){ //ordan bir yere gidemiyorsan current stacktekine eşitlensin
if (djikstra.empty())
break;
current = &djikstra.top();
djikstra.pop();
cost_passer = (*current).cost_passer;
}
эти условия в цикле в то время.
Пожалуйста, добавьте минимальный, поддающийся проверке, полный пример, чтобы воспроизвести вашу проблему. –
Обычный способ записи '(* current) .ways.size()' is current-> ways.size() '. –
Выглядит так, как будто вы берете указатель на элемент в верхней части стека, а затем вы его всплываете. Проблема в том, что popping удаляет и уничтожает элемент в верхней части стека, поэтому ваш указатель уже недействителен, а разыменование его теперь становится неопределенным поведением. –