首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vector<A> vs vector<A*> vs vector<shared_ptr<A> > in C++

vector<A> vs vector<A*> vs vector<shared_ptr<A> > in C++
EN

Stack Overflow用户
提问于 2016-02-02 10:40:16
回答 1查看 117关注 0票数 1

我有一个既不可复制又不可分配的class A .现在,我想要另一个class B来保存A对象的向量。同样清楚的是,B拥有这些对象的所有权。

在我看来,(至少)有三种选择:

  1. 使用vector<A>
  2. 使用vector<A*>
  3. 使用vector<shared_ptr<A> >

1.由于A不可复制、可构造/可分配而不能工作,这是对的吗?

我不喜欢2,因为我必须确保再次删除指针。

如果我使用3,我觉得这并不能清楚地表示BA对象的所有者。我还遇到了这样的问题:如果我希望B的用户删除这个向量中的指针,他们需要传递他们想要通过shared_ptr<A>删除的元素,对吗?

在这种情况下,什么才是干净的设计决策呢?这方面有什么好的参考资料吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 10:43:38

  1. 正确;A需要与std::vector一起使用可转让复制和可复制构造,但从C++11 on来看,这在很大程度上取决于您需要在向量上使用的操作。
  2. 我同意,我将不再使用原始指针,除非我有一个非常令人信服的理由(在我看来,这不是一个)。
  3. 你考虑过unique_ptr吗?在这个选项上有一个不错的博客帖子
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35151151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档