带有数组的 unique_ptr 有什么用吗?

新手上路,请多包涵

std::unique_ptr 支持数组,例如:

 std::unique_ptr<int[]> p(new int[10]);

但需要吗?使用 std::vectorstd::array 可能更方便。

你觉得那个结构有什么用吗?

原文由 fen 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

有些人没有使用 std::vector 的奢侈,即使使用分配器也是如此。有些人需要一个动态大小的数组,所以 std::array 出来了。有些人从已知返回数组的其他代码中获取数组;并且该代码不会被重写以返回 vector 或其他东西。

通过允许 unique_ptr<T[]> ,您可以满足这些需求。

简而言之,您在 需要 时使用 unique_ptr<T[]> 。当替代方案根本不适合您时。这是不得已而为之的工具。

原文由 Nicol Bolas 发布,翻译遵循 CC BY-SA 3.0 许可协议

代码中最好避免 new 。反而:

 size_t size{ 10 }; // for example.
auto buffer = std::make_unique<char[]>(size);

原文由 Amit 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题