【发布时间】:2016-10-19 18:16:12
【问题描述】:
我想做这样的事情:
std::set<my_type*> s;
s.insert(new my_type(...));
...
s.erase(...);
set 的擦除将删除指针以避免内存泄漏。
这对于 C++ 容器是否可行,或者正确的解决方案是将容器子类化并编写我自己的擦除,或使用某种智能指针方案?
【问题讨论】:
-
智能指针有什么问题?
-
智能指针没什么问题,我想知道有没有什么方法可以减少工程量。
-
set<unique_ptr<my_type>> s; s.insert (make_unique<my_type> (...));在我看来并不比你的代码更具工程性。 -
你的意思是
std::set<my_type*> s;,是吗? -
@user318904 智能指针在 c++14 中,所以正如 JohnB 指出的那样,它几乎不是任何工程。标准集合类的子类是seldom the correct approach。
标签: c++ design-patterns stl c++14