c++中vector的存储问题
vector用的顺序存储但是它存的是什么?比如vector<int>它每个元素存的是每个int的地址,还是int本身;还有vector<class>class是一个需要2...
vector用的顺序存储
但是它存的是什么?
比如vector<int>它每个元素存的是每个int的地址,还是int本身;
还有vector<class> class是一个需要2个字节存储空间的类,它是把每个对象顺序存储在一起,还是把地址顺序存在一起;
就是说,当我有vector<class>::iterater i,j分别指向第一第二个元素;j-i等于1还是等于2; 展开
但是它存的是什么?
比如vector<int>它每个元素存的是每个int的地址,还是int本身;
还有vector<class> class是一个需要2个字节存储空间的类,它是把每个对象顺序存储在一起,还是把地址顺序存在一起;
就是说,当我有vector<class>::iterater i,j分别指向第一第二个元素;j-i等于1还是等于2; 展开
2个回答
展开全部
c++中的stl除了平常使用的vector、map之类的还有一个组件叫Allocator。其实是stl各类数据结构中统一的负责内存分配的组件。Allocator很少被显示的调用,但其实各类stl数据结构在初始化的时候都支持显示的指定Allocator组件。各类结构中的size和capacity函数数量的不一致就是Allocator导致的。size是当前容器中元素的数量。capacity是当前容易能够容纳元素的数量。其中capacity的变化就是Allocator重新申请内存导致的。所以说stl的容器实际上都是逻辑概念,他们实现仅仅是相应数据结构的使用方法,并不涉及真正的内存组织结构,内存住址结构都是由Allocator实现的。也就是说vector叫顺序表、list是链表,但实际上在内存上list也可能是顺序的,只不过list实现了链表的相应功能而已。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询