读书人

容器的存储方式解决方案

发布时间: 2012-05-06 16:15:43 作者: rapoo

容器的存储方式
所有容器的存储都不是一块连续内存的吗?

C/C++ code
int 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发现已经申请到的内存不够用了,就会重新申请内存,并将数据拷贝进新内存区域,然后删除旧的。

读书人网 >C++

热点推荐