容器的存储方式解决方案
容器的存储方式所有容器的存储都不是一块连续内存的吗?C/C++ codeint ival 3vectorT vecvectorT::
容器的存储方式
所有容器的存储都不是一块连续内存的吗?
C/C++ codeint ival = 3;vector<T> vec;vector<T>::iterator first = vec.begin(), last = vec.end();vec.insert(first, ival);// 添加新元素后last失效了,last的不再指向vec中的元素或末端后一位。为什么不是指向最后一个元素?// vec中的添加元素是动态分配内存?
[解决办法]vector是一块连续的内存的,end这个迭代器是指示你当前实际存储的下一个位置而已,而不是vector占用的内存的最后位置。vector是动态内存管理,当你插入一个数据的时候,vector发现已经申请到的内存不够用了,就会重新申请内存,并将数据拷贝进新内存区域,然后删除旧的。