从头开始设计一个新系统。我将使用 STL 来存储某些长期存在的对象的列表和映射。
问题:我应该确保我的对象具有复制构造函数并将对象的副本存储在我的 STL 容器中,还是自己管理生命周期和范围并仅将指向这些对象的指针存储在我的 STL 容器中通常更好?
我意识到这在细节上有些不足,但我正在寻找“理论上的”更好的答案(如果存在),因为我知道这两种解决方案都是可能的。
使用指针有两个非常明显的缺点:
1) 我必须自己在 STL 之外的范围内管理这些对象的分配/释放。
2)我无法在堆栈上创建临时对象并将其添加到我的容器中。
我还缺少什么吗?
由于人们正在讨论使用指针的效率。
如果您正在考虑使用 std::vector 并且更新很少并且您经常迭代您的集合并且它是非多态类型存储对象“副本”将会更有效,因为您将获得更好的引用局部性。
Otoh,如果更新是常见的,存储指针将节省复制/重定位成本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)