vector类里insert函数的一点问题

比如一个vector类vec的大小为5,里面的元素全为1。然后一条语句vec.insert(vec.end(),10),然后vec这个类里的元素个数就变为了6,10在元素... 比如一个vector类vec的大小为5,里面的元素全为1。然后一条语句 vec.insert(vec.end(),10),然后vec这个类里的元素个数就变为了6,10在元素的最后一位。这个我没问题,因为end()函数是返回最后一个元素的下一个元素。但是如果写这样一条语句 vec.insert(vec.begin(),20) ,根据结果,元素个数变为7,然后20会出现在第一个。而begin()函数明明是返回第一个元素,那么这个类的大小为什么会变大一个呢?我就理解不了? 展开
 我来答
松甜恬0Je4ba
2014-05-13 · TA获得超过2.6万个赞
知道大有可为答主
回答量:7475
采纳率:100%
帮助的人:3414万
展开全部
第一点 begin返回的不是第一个元素,而是第一个位置。它类似于数组的下标,begin相当于0.
insert这个函数,第一个参数是要添加元素添加的位置,begin就是放在第一的位置,end就是放在最后一个元素的下一个位置。

第二点 插入元素后,vector会变大啊,如果在begin的位置插入,则原先的元素会依次后移,然后留出位置插入新的元素。
porker2008
2014-05-13 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部

那是因为vector的insert的函数原型是

iterator insert (iterator position, const value_type& val);

实际效果是把val插入在position指向的元素的前面


因为

vec.end();

返回的是最后一个元素的下一个位置,


所以

vec.insert(vec.end(),10);

实际上是在“最后一个元素的下一个位置的前面插入10”,所以等价于在vec的最后插入10


vec.begin();

返回第一个元素的位置,


所以

vec.insert(vec.begin(),20);

实际上是“在第一个元素的前面插入20”,等价于在vec的最前面插入20

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式