【发布时间】:2010-09-13 13:40:27
【问题描述】:
从头开始设计一个新系统。我将使用 STL 来存储某些长寿命对象的列表和地图。
问题:我是否应该确保我的对象具有复制构造函数并将对象的副本存储在我的 STL 容器中,或者我自己管理生命周期和范围并将指向这些对象的指针存储在我的 STL 容器中通常更好?
我意识到这在细节上有些不足,但我正在寻找“理论上的”更好的答案(如果存在),因为我知道这两种解决方案都是可能的。
玩指针有两个非常明显的缺点: 1) 我必须自己在 STL 之外的范围内管理这些对象的分配/解除分配。 2) 我无法在堆栈上创建临时对象并将其添加到我的容器中。
我还有什么遗漏的吗?
【问题讨论】:
-
天哪,我喜欢这个网站,这是我今天想到的确切问题...感谢您为我提出的问题 :-)
-
另一个有趣的事情是我们应该检查指针是否真的被添加到集合中,如果没有,我们可能应该调用 delete 以避免内存泄漏...... if ((set.insert(指针)).second = false) {删除指针;}