为了支持快速随机访问,部分容器如vector和string在内存中连续存储元素,当所在连续内存空间大小不足以存放这块需要连续存放的数据时,系统将为其分配一块更大的连续内存空间,然后将之前内存空间中的数据依次复制过来。为了防止频繁的整块复制操作,系统不应每次都按需分配;同时也不能分配过大的连续空间导致浪费,导致需要较大连续存储空间的数据找不到合适的连续空闲区域。那么,c++中的这些容器在实际应用中时如何分配的呢?
c.capacity() //不重新分配内存空间的话,容器c最多保存多少元素。
多次尝试发现系统倾向于首先给程序分配申请大小的内存空间,以后按照initSize*2^k 寻找合适的内存空间进行分配。