微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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接口不应该将所有权转移给客户端.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐