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

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

概述想象一个类C,它有一个类型为std :: vector的成员变量m_MyList,我想在其中存储MyClass类型的对象. C有两个函数可以在m_MyList中添加或删除对象. 对于C的消费者,m_MyList也应该是可访问的,因为他们需要读取MyClass对象的集合.集合的外部阅读器无法更改集合,因此MyClass对象仅由C拥有. 现在我的问题: 在C 11风格中,向量中存储的最佳T是什么? 可 想象一个类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 – 我应该在我的类中的std :: vector成员变量中使用std :: unique_ptr吗?全部内容,希望文章能够帮你解决c – 我应该在我的类中的std :: vector成员变量中使用std :: unique_ptr吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1236333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存