c – 我应该在我的类中的std :: vector成员变量中使用std :: unique_ptr吗?

前端之家收集整理的这篇文章主要介绍了c – 我应该在我的类中的std :: vector成员变量中使用std :: unique_ptr吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
想象一个类C,它有一个类型为std :: vector的成员变量m_MyList,我想在其中存储MyClass类型的对象. C有两个函数可以在m_MyList中添加删除对象.
对于C的消费者,m_MyList也应该是可访问的,因为他们需要读取MyClass对象的集合.集合的外部阅读器无法更改集合,因此MyClass对象仅由C拥有.

现在我的问题:
在C 11风格中,向量中存储的最佳T是什么?
可能性似乎是:

> std :: vector< MyClass>
> std :: vector< MyClass *>
> std :: vector< unique_ptr< MyClass>>,使用std:move将unique_ptr推入向量

解决方法

如果MyClass对象归C所有,那么最好的选择是最简单的:
std::vector<MyClass>

我在这里看到使用std :: unique_ptrs的唯一原因是你需要保持指向多态的基类的指针.在这种情况下,unique_ptrs用于在向量被破坏时释放资源.但是C接口不应该将所有权转移给客户端.

猜你在找的C&C++相关文章