Здравствуйте, извините, если есть какие-либо проблемы в этом посте, я впервые использую сайт, и я немного отчаялся.
Это для школы.Учитель предоставил нам готовый код для класса Heap
, класса Set
и некоторых других вещей.Из классов, которые я сделал сам, есть один, который имеет 4 атрибута: 3 из них long double
с, а один - std::vector
из Set
с (не std::set
с, преподаватель предоставил Set
с).
У меня проблема при вставке или удалении объектов этого класса из предоставленной кучи.Объекты, вставленные в кучу, при удалении пропускают все, что я положил на std::vector
.
Часть из моего main
, где это происходит (за исключением отладки)
PartialSolution temp; //this is the object
temp.includeSet(*s);
temp.Print(); //so far everything works fine
H.insert(temp);
PartialSolution l;
l = H.top(); //written by teacher, gets first element from heap
l.Print(); //here the contents I've added with includeSet are gone
Я почти уверен, что проблема не может быть в куче, так как учитель сделал это, а также использует шаблон clthe атрибутов объектов на атрибутах объектов, но я действительно понятия не имею, где проблемаможет быть.
Вектор объявлен как
std::vector<Set> sets;
РЕДАКТИРОВАТЬ: Решено, спасибо.(Извините, если я делаю это неправильно, я не уверен, как еще закрыть вопрос).Проблема заключалась в методе оператора =
для PartialSolution
, созданном учителем, который копировал только атрибуты long double
и использовался в Heap
.Добавлена строка для копирования std::vector
, и теперь она работает нормально.