处理 std::array of shared_ptrs 的最佳现代 C++ 方法?

Best modern C++ way to handle a std::array of shared_ptrs?

在我的classBox中有一个成员变量std::array<Object*, N> m_objects。在 Box 的成员函数中,我通过 std::array 设置了 Objects this->m_objects[i] = make_shared<Object>("<some parameters>");.

这是最好的现代 C++ 11(或更新版本)方法吗?

this->m_objects[i] 采用指向对象 (Object*) 的原始指针。 shared_ptr 的数组将是 std::array<std::shared_ptr<Object>,N>.

我会考虑:

  1. 明明知道要N个元素,为什么还要动态分配?为什么不是 std::array 按值 (std::array<Object,N>)
  2. 如果您不一定需要 N 个对象,为什么要使用 std::array 而不是 std::vector?
  3. 您真的需要共享这些指针的所有权吗?如果不这样做,使用 std::unique_ptr
  4. 会更有效