c++ - C ++,从堆中插入/删除时对象的属性消失
问题描述
您好对不起,如果这篇文章有任何问题,这是我第一次使用该网站,我有点绝望。
这是给学校的。老师为我们提供了一个现成的代码,用于一个Heap
班级和一个Set
班级以及其他一些东西。在我自己制作的课程中,有一个有 4 个属性:其中 3 个是long double
s,一个是std::vector
s的 a Set
(不是std::set
s,老师提供了Set
s)。
从提供的堆中插入或删除此类的对象时遇到问题。插入堆中的对象在删除时会丢失我放在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
我很确定问题不可能出现在堆中,因为老师做了它,并且它使用了对象属性上的对象属性的模板,但我真的不知道问题可能出在哪里。
向量被声明为
std::vector<Set> sets;
编辑:解决了,谢谢。(对不起,如果我做错了,我不确定如何结束这个问题)。问题出在老师创建的=
运算符方法中PartialSolution
,该方法仅复制了long double
属性并在Heap
. 添加了一行来复制std::vector
,现在可以正常工作了。
解决方案
推荐阅读
- r - for 循环和跨数据集子集的替代方案。(..使用高阶函数或替代数据结构)
- ios - 使用模型获取 cellForRowAtIndexPath 中的数据失败
- java - 使用 viewModal 与其他 Fragment 通信
- reactjs - How to repeat escape character n times in JSX
- javascript - Angular 6 字体真棒图标显示为随机字符
- python - 多页 tiff 调整大小 python
- mongodb - 在 mongodb 中引用 GeoJson 对象
- javascript - 视图更改时反应 JS 本地存储更新
- python - 什么是 DataFrame.columns.name?
- javascript - nodejs:获取守护进程的子进程并杀死它们