顺序容器
顺序容器
容器定义和初始化
当一个容器初始化为另一容器的拷贝时,两个容器的容器类型和元素类型都必须相同。
固定大小数组array,
虽然我们不能对内置数组类型进行拷贝和赋值操作,但 array 并无此限制:
常用操作
- swap:交换函数
- assign
- size ( forward_list 不支持 )
- push_back, insert, push_front
- emplace_front, emplace, emplace_back
vector对象是如何增长的
我们可以向vector中添加新的元素,在定义的时候不需要指定其大小,那么vector对象是如何增长的呢?
当不得不获取新的内存空间时,vector 和 string 的实现通常会分配比新空间需求更大的内存空间作为备用,这样就不需要每次添加新元素都重新分配内存空间了。
相关的操作,
reserve 并不改变容器中元素的数量,它仅影响vector 预先分配多大的内存空间。
只有当需求的内存空间超过当前容量时,reserve 调用才会改变 vector 的容量。当需求大小小于或等于当前容量时,reserve 什么也不做。在调用 reserve 之后, capacity 将会大于或等于传递给 reserve 的参数。
也就是说 reserve 永远不会减小容器占用的内存空间。类似的, resize 成员函数只改变容器中元素的数目,而不是容器的容量。