c++ - shared_ptr 对容器的意义是什么?

标签 c++ boost containers shared-ptr

boost::shared_ptr 声明到像 std::vectorstd::list 这样的容器到底有什么意义?

这是一个使用 BOOST_AUTO 的例子。

void someFunction()
{
  ...
  BOOST_AUTO(sharedPtrToContainer, boost::make_shared<std::vector<T>>());
  ...
}

如果只在本地需要容器,有什么意义吗?有什么好处?容器的 shared_ptr 有什么用?

最佳答案

What actually is the point of declaring a boost::shared_ptr to a container like std::vector or std::list?

与使用指向任何对象类型的共享指针完全相同;它允许您与其他范围共享对象的所有权。对象恰好是容器没有任何区别。

Is there any sense if you only need the container locally?

没有;如果你只在本地需要它,那么它应该是一个普通的自动对象。

What is the benefit? What would be the uses of a shared_ptr to a container?

如果你需要将它的生命周期延长到当前作用域之外,那么你需要动态创建和销毁它,然后它的生命周期应该由智能指针管理。

关于c++ - shared_ptr 对容器的意义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065446/

相关文章:

c++ - 如何在 C++ 中清除 unordered_map 的 unordered_map?

c++ - C++函数模板在汇编中是如何实现的?

c++ - 如何使用 Boost.Variant 迭代一系列有界类型

c++ - Boost.Pointer 容器在 C++11/14 中被 std::unique_ptr 淘汰了吗?

c++ - boost::lexical_cast<int> ("-138.8468953457983248") 抛出异常

html - 如何扩展 React 组件以使用 Flexbox 填充页面

variables - Docker撰写变量

java - 获取网站的端口号

c++ - 如何仅插入数字和字母应该显示一条消息或其他内容

azure - 我可以从 Azure 容器注册表中清除所有存储库,而不需要逐一输入所有存储库吗