【发布时间】:2011-02-07 20:53:28
【问题描述】:
list::erase() 的文档说“调用析构函数之前”,这是什么意思?如果我想erase(it) 一个项目,然后再次push_back(*it) 该项目,因为它已经被破坏了,那会是非法的吗?
【问题讨论】:
-
您确定
std::list是适合您用例的容器吗?链表提供理想性能特征的用例很少。 -
@James McNellis-基于上述用例,OP 似乎正试图在列表中移动元素。这将是一个非常好的用例,因为所有其他序列都需要 O(n) 来完成。
-
@templatetypedef:也许吧。我仍然会非常犹豫推荐
std::list,而不知道它是如何被使用的。每个元素的大小、复制每个元素的成本、元素的数量以及拼接与迭代的相对频率都是重要的标准,我们不知道这些。