作业帮 > 综合 > 作业

vector类里insert函数的一点问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 01:14:10
vector类里insert函数的一点问题
比如一个vector类vec的大小为5,里面的元素全为1.然后一条语句 vec.insert(vec.end(),10),然后vec这个类里的元素个数就变为了6,10在元素的最后一位.这个我没问题,因为end()函数是返回最后一个元素的下一个元素.但是如果写这样一条语句 vec.insert(vec.begin(),20) ,根据结果,元素个数变为7,然后20会出现在第一个.而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