c++ vector的插入问题

在vector的插入(inser()或push_back())一个对象vector中存的是这个对象本身,还是这个对象的一个副本?我看到vector类模板中形参是用的引用类... 在vector的插入(inser()或push_back())一个对象
vector中存的是这个对象本身,还是这个对象的一个副本?
我看到vector类模板中形参是用的引用类型
iterator insert(iterator it, const T& x = T());
展开
 我来答
huifeng00
2010-06-06 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:712万
展开全部
楼主的这个问题很好,这是C++和java的一个重要的区别。
c++中容器元素都是副本。
就是说,vector中添加元素的时候,是将元素值复制到容器里。就是说容器中存放的是原始元素的副本。被复制的原始值与新容器中的元素各不相关,此后,容器内元素值发生变化时,被复制的原值不会受到影响,反之亦然。
你自己可以写个程序验证下。例如;
vector<string> vs;
string s="nihao";
vs.push_back(s);
vs[0]="";
你会发现即使修改了向量中的元素,但是原来的s是没有变化的。
同理插入也是一样的。
这个概念要牢记
容器元素都是副本。不仅对vector如此,对其他容器也是一样的。
上上西
2010-06-06 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
vector是一个容器,里面存放的是数据本身;比如你vector<CBase> vtr;
可以存放CBase类型的对象。vtr可以和数组类似的使用,如vtr[2];标准库中的容器,一下子讲不了那么多。
insert是一个函数而已,那是传引用形参,完全是两码事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
同学叫我神
2010-06-06 · TA获得超过129个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:0
展开全部
你想一下数组里面存的是对象本身,还是对象的一个副本呀。
还能有存副本的?那有啥意思。
insert是一个函数而已,那是传引用形参,完全是两码事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
it程序员的日常
2010-06-06 · TA获得超过489个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:127万
展开全部
vector<你的数据类型>test;
test.push_back(你要插入的数据);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式