
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()函数明明是返回第一个元素,那么这个类的大小为什么会变大一个呢?我就理解不了?
展开
展开全部
第一点 begin返回的不是第一个元素,而是第一个位置。它类似于数组的下标,begin相当于0.
insert这个函数,第一个参数是要添加元素添加的位置,begin就是放在第一的位置,end就是放在最后一个元素的下一个位置。
第二点 插入元素后,vector会变大啊,如果在begin的位置插入,则原先的元素会依次后移,然后留出位置插入新的元素。
insert这个函数,第一个参数是要添加元素添加的位置,begin就是放在第一的位置,end就是放在最后一个元素的下一个位置。
第二点 插入元素后,vector会变大啊,如果在begin的位置插入,则原先的元素会依次后移,然后留出位置插入新的元素。
展开全部
那是因为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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询