使用std :: shared_ptr <std :: vector>而不是boost :: shared_array是否有意义?

mav*_*rik 6 c++ boost stl c++11

现在我正在重写我的代码的一部分以使用C++ 11标准.在某些地方我发现了以下代码:

boost::shared_array<uint8_t> array;
Run Code Online (Sandbox Code Playgroud)

它是否可以替换为:

std::shared_ptr<std::vector<uint8_t>> array;
Run Code Online (Sandbox Code Playgroud)

我正在尝试替换我的代码中已经在C++ 11中提供的所有boost功能.

我需要澄清一下.实际上我需要一个原始数组(但使用refcount,因此可以自动删除),不需要所有这些矢量功能.因此boost :: shared_array解决了我想要的问题而无需任何额外费用.但是我正在努力让我的代码尽可能地使用新标准(虽然许多来自boost的库仍未被新标准所涵盖).

谢谢.

Bar*_*icz 4

鉴于编译器对 C++11 支持的当前状况以及维护构建的人员的懒惰,我现在将保持原样。Boost 具有几乎可以在任何地方工作的良好特性,包括旧的编译器,并且您想要进行的更改几乎不会改进代码。

这段代码也不完全相同。

  • @maverik:C++11 有 `shared_ptr&lt;T[]&gt;` 和 `unique_ptr&lt;T[]&gt;` 专业化,我想它们正好满足了这个目的。 (4认同)
  • @rubenvb:C++11 没有 `shared_ptr&lt;T[]&gt;` 专业化,您必须提供自己的自定义删除器才能使 `shared_ptr` 与数组一起使用。 (3认同)
  • @AndyProwl 等等,什么?我记忆中的情况绝对不是这样的。如果这是真的,Valgrind 会以不同的方式告诉我 (2认同)