C – 删除由指针引用的向量元素
好吧,我不知道是否可能,但事情是:
struct stPiece { /* some stuff */ stPiece *mother; // pointer to the piece that created this one }; vector<stPiece> pieces; 是否可以将“母亲”引用的作品从片段中删除,仅将该指针作为参考?怎么样? 它会混淆其他参考吗? (即如果它不是向量中的最后一个元素,则通过将下一个元素移动到其他存储位置,而另一个’*母亲’保持不变).当然,我假设所有子片段都将被删除(因此我不需要更新任何指向同一母亲的指针). 谢谢! 解决方法
如果你的母指针直接指向碎片矢量的元素,你将遇到各种麻烦.
从片段中删除元素将在更高的索引处移动元素的所有位置.即使插入元素也会使所有指针无效,因为向量可能需要重新分配它的内部数组,这可能会将所有元素转移到内存中的新位置. 回答你的主要问题:你不能直接删除指针所在的元素,首先需要通过向量搜索来找到它,或者在向量中计算它的索引. 不将指针存储为碎片作为母亲,而是元素的索引将使其更加健壮,因此至少插入新元素不会破坏现有的母亲.但是从碎片中删除仍会将元素转移到新索引. 使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |