boost::smart_ptr 可以在 std 容器中使用吗?
boost::smart_ptr(如scoped_ptr和shared_ptr)可以在std容器(如std::map)中使用吗?
class SomeClass
{
std::map<int,boost::scoped_ptr<SomeOtherClass> > a_map;
};
由于 boost::smart_ptr 可以用于多态性,这是真的吗在这种情况下也是如此吗?容器的销毁,会触发子类的正确销毁吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
scoped_ptr
不能在标准容器中使用,因为它无法复制(这是容器接口所要求的)。然而,可以使用shared_ptr
。如果您无法使用 C++11 并且已经在使用 boost,请考虑 指针容器 其性能比共享指针容器要好一些。
如果您使用的是 C++11,请考虑使用
unique_ptr
容器,它的执行方式应与 boost 的指针容器类似。scoped_ptr
cannot be used in standard containers because it cannot be copied (which is required by the containers' interfaces).shared_ptr
may be used, however.If you can't use C++11 and you're using boost already, consider the pointer containers which will perform somewhat better than a container of shared pointers.
If you're using C++11, consider a container of
unique_ptr
, which should perform similarly to boost's pointer containers.