顺序容器
vector deque list forward_list array string
顺序容器提供的是快速访问元素的能力。
以下的方面性能折中:
(1)向容器中添加和删除元素
(2)非顺序的访问容器中的元素的代价。
array:不支持添加和删除元素以及改变容器大小的操作。
使用swap
swap可以交换两个相同类型容器的内容。
除了array之外,交换两个容器内容的操作很快–元素本身并未交换,swap只是交换了两个容器的内部结构。意味着元素不会被移动,除了string之外,指向容器的迭代器、引用和指针在swap之后,这些元素已经属于不同的容器了。string调用swap导致迭代器、引用和指针的失效。
swap两个array会真正的交换他们的元素。指针、引用和迭代器所绑定的元素保持不变,其元素值已经与另外的array中的对应元素进行了交换。
使用insert的返回值
使用insert的返回值,可以在容器的一个特定的位置反复的插入元素。
若是在首位置反复插入,相当于调用push_front
使用emplace操作
emplace_front、emplace、emplace_back对应
push_front、insert、push_back
当调用insert、push成员函数时,将元素类型的对象传递给他们,这些对象被拷贝到容器中。
而调用emplace成员的时,则是将参数传递给元素类型的构造函数。emplace成员使用这些参数在容器管理的内存空间中直接构造元素。
管理容器的成员函数
shrik_to_fit 只是用于vector string deque
capacity和reverse只适用于vector和string
c.shrink_to_fit()请将capacity()减少到与size()相同的大小
c.capacity() 不重新分配内存的话,c可以保存多少个元素
c.reverse(n) 分配至少能够容纳n个元素的内存空间
capacity和size的区别:
size是指的是已经保存的元素的数目;capacity则是不分配的新的内存空间的前提下它可以保存多少元素。