我已经在这方面挣扎了很长一段时间,例如,如果我要集思广益,我不知道应该使用哪一个?我不应该想太多,并使用智能指针向量?请详细说明一下我可以使用哪些代码示例?
vector <Foo> example1;
vector<unique_ptr<Foo>> example2;
答案 0 :(得分:-1)
根据您对原始问题的描述,我假设您正在谈论类似这样的事情......
class Foo { /*...*/ };
std::vector< std::shared_ptr<Foo> > vec_of_ptr;
std::vector< std::vector<Foo> > vec_of_vec;
vec_of_ptr将是指针保持对象的列表 - &gt; 1维列表
vec_of_vec将是指针保持对象列表的列表 - &gt;二维列表
你问的是什么?
在投票后被删除
注意:一旦原始问题被修改,那么原始答案就像我看起来当然很傻:)
实际上在阅读了这篇文章之后https://hackernoon.com/the-decline-of-stack-overflow-7cb69faa575d我只是想通过实验回答一个问题。
显然作者喜欢我们所有人可能都不知道到底是什么问题。我试图重复并想象出原始问题,不知何故,作者想出了另一个更接近的问题......
我认为这正是讨论和头脑风暴的力量。 正确的答案需要一个正确的问题,一开始就不容易弄清楚。
可能一个下来的选民不得不留下一些建设性的评论,只是盲目的自我。
答案 1 :(得分:-1)
可能下一个问题是
&#34;为什么我们需要指针而不是通常的对象?&#34;
&#34;为什么我们需要一个唯一的指针而不是共享指针?&#34;
之后你会知道答案 &#34;为什么我们需要一个唯一指针的向量? 而不是共享指针的向量.. 而不是通常对象的矢量。&#34;一些基本的区别
vector&lt; Foo&gt;例1;
将常用对象存储在矢量中。在向量操作(例如插入)期间将执行Foo的复制操作。
矢量&lt; unique_ptr&lt; Foo&gt; &GT;示例2;
将对象的唯一指针存储在向量中。 任何向量操作都不会执行Foo的复制操作。 您需要移动语义。 例如
unique_ptr < Foo > obj;
example2.insert(std::move(obj))
基本上,如果您打算在应用程序中使用唯一的,不可复制的Foo对象,则应使用unique_ptr。
否则,如果Foo obj的内存占用很少,我只会使用常规对象的向量。