对于vector中的insert函数,总结几种常用用法,并且对其返回值进行验证,还有一个小的陷阱(迭代器失效问题)
首先看在vector中,函数的声明如下:
接下来用代码进行验证:
int arr[] = {3,4,5}; vector
运行过程中,发现迭代器ite始终指向的是vector的第一个位置,即指向的位置不变。因为在vector的insert函数实现细节上,基本思想是将插入点后的元素依次往后移动,留出来要插入的元素的空间,将插入元素放进去,所以迭代器指向的位置不会发生变化。当然在函数具体的实现细节上还要考虑很多,比如当前的备用空间是否能全部容纳要插入的元素,还要考虑实现的效率。这里有一个大家容易忽略的问题,当vector重新申请了内存以后,之前所有的迭代器都会失效。迭代器ite2是根据ite向后移动了两个位置,在插入三个1之前,指向元素4,但是当插入了三个1之后,因为vector重新申请了空间,但是ite2还是指向原来的位置,此时就发生错误。
———————————————— 版权声明:本文为CSDN博主「ddou_pan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/ddou_pan/article/details/79784302