底层数据结构为数组 ,支持快速随机访问
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。(中间插入和删除效率低).它采用线性空间存储数据。如果空间不够,则另外分配新的两倍大小的空间,然后把旧空间释放掉。
- vector不适合push_front(效率很低)
- vector不适合中间插入删除操作。中间插入删除操作会引起内存拷贝。
存放结构体类型的变量的两种存放方式
- 方式一:放入这个结构体类型变量的副本。
- 方式二:放入指向这个结构体类型变量的指针。
1 | /*[方式一] 结构体放栈中,vector中放副本---------------------*/ |
1 | /*[方式二] 结构体放入堆中,vector中放指针---------------------*/ |