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

时间:2016-06-14 09:52:02

标签: c++ shared-ptr

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

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

1 个答案:

答案 0 :(得分:2)

this->m_objects[i]获取指向Object(Object*)的原始指针。 shared_ptr数组为std::array<std::shared_ptr<Object>,N>

我会考虑:

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