处理 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
设置了 Object
s
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>
.
我会考虑:
- 明明知道要N个元素,为什么还要动态分配?为什么不是 std::array 按值 (
std::array<Object,N>
)
- 如果您不一定需要 N 个对象,为什么要使用 std::array 而不是 std::vector?
- 您真的需要共享这些指针的所有权吗?如果不这样做,使用 std::unique_ptr
会更有效
在我的classBox
中有一个成员变量std::array<Object*, N> m_objects
。在 Box
的成员函数中,我通过 std::array
设置了 Object
s
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>
.
我会考虑:
- 明明知道要N个元素,为什么还要动态分配?为什么不是 std::array 按值 (
std::array<Object,N>
) - 如果您不一定需要 N 个对象,为什么要使用 std::array 而不是 std::vector?
- 您真的需要共享这些指针的所有权吗?如果不这样做,使用 std::unique_ptr 会更有效