【发布时间】:2012-07-04 21:06:01
【问题描述】:
我有一个std::list<obj*>,其中obj 是我的班级:
std::list<obj*> list_of_ptr;
list_of_ptr.push_back(new obj());
我想将此列表转换为等效的std::list<obj>,之后我不再需要list_of_ptr。
完成这项工作的最快方法是什么?
【问题讨论】:
-
为什么首先要有一个拥有指针的容器?首选的解决方案是从一开始就使用
obj的容器。你用什么标准来选择std::list? -
@JamesMcNellis 你是对的,但我现在无法更改。
-
除非不可能更改代码(例如,它是其他软件组件所依赖的接口的一部分,因此无法更改),否则要简单得多使用自动生命周期管理(即避免显式的
new和delete)重写代码,而不是尝试使您的手动内存管理正确。 -
@JamesMcNellis This 是问题所在。
-
像这样在容器中存储指针几乎总是不必要的,而且是个坏主意。让容器为你管理你的对象,这是它的强项。
标签: c++ stl containers