boost::smart_ptr 可以在 std 容器中使用吗?

发布于 2024-10-13 11:49:10 字数 364 浏览 3 评论 0 原文

boost::smart_ptr(如scoped_ptr和shared_ptr)可以在std容器(如std::map)中使用吗?

class SomeClass
{
    std::map<int,boost::scoped_ptr<SomeOtherClass> > a_map;
};

由于 boost::smart_ptr 可以用于多态性,这是真的吗在这种情况下也是如此吗?容器的销毁,会触发子类的正确销毁吗?

Can boost::smart_ptr such as scoped_ptr and shared_ptr be used in std containers such as std::map?

class SomeClass
{
    std::map<int,boost::scoped_ptr<SomeOtherClass> > a_map;
};

As boost::smart_ptr can be used for polymorphism, is it true in this case as well? Will the destruction of the container, trigger the correct destruction of the subclasses?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尾戒 2024-10-20 11:49:10

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文