如何清空列表而不破坏其元素

How to empty out a list without destroying its elements?

本文关键字:元素 列表 何清空 清空      更新时间:2023-10-16

我有一个点列表,而不是指向点的指针,我需要在不破坏元素的情况下清空这些点。以下是我要做的:我遍历clipped中的所有点,如果它们满足某个标准,我将它们添加到temp中。如果他们不这样做,我可能会也可能不会做一些函数来生成另一个点,然后将其添加到temp中。在处理完clipped中的所有点之后,我清空clipped,将temp中的元素添加到其中,然后再次执行循环,总共4次。我的问题是:如何清空clipped而不影响temp中的点如果我只是做clipped->clear(),这些点甚至被破坏了吗?这个函数会被调用很多次,所以如果我简单地执行clipped = new std::list<point>(),我会以内存泄漏/堆栈溢出告终吗?

Point是一个包含3个int的结构:x、y和z;

std::list<point>添加点将生成副本。所以是的,清除clipped会破坏它的点,而不会破坏你在temp中保存的副本。你可以完全按计划进行。