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()函数明明是返回第一个元素,那么这个类的大小为什么会变大一个呢?我就理解不了?
展开
2个回答
展开全部
那是因为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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询