1. vector
首先vector容器与array非常相似,主要区别就在于空间的运用灵活性。array一旦配置了空间就不可以改变,属于静态空间。而vector是动态空间,它的空间分配依赖于元素个数,当空间不足时,将会把空间整个扩大二倍。
实际上vector结构有三个迭代器(都是普通指针)Random Access Iterators的动态数组
分别为iterator start、iterator finish、iterator end_of_storage
其中finish-start定义了容器中元素的个数,它等同于size()
而end_of_storage-start定义了容器所能容纳的最大元素个数,它等同于capacity()
常用的一些操作如下:
begin(), end(), size(), capacity(), empty(), operator[](int index),at(int index),
front(), back(), push_back(), pop_back(),insert(iterator pos,n,elem),
erase(iterator iter),
erase(iterator begin_iter,iterator end_ietr),
clear();
vector<int>obj(2,9); //9,9
vector<int>::iterator iter;
iter=find(obj.begin(),obj.end(),9);
obj.erase(iter);
obj.insert(iter,3,7);
obj.clear();
2. list
STL中的list描述的是双向链表,相对于vector来说,对于插入、删除元素有较高的效率。它的迭代器是双向迭代器Bidireactional iterators,不支持随机存取。实际上STL中的list不仅是双向链表,而且还是一个环状双向链表。常用的一些成员函数如下所示
begin(), end(), empty(), size(),
front(), back(), push_back(),push_front(),pop_front(),pop_back().
insert(iterator pos,int insert_elem),
erase(iterator pos),clear(),remove(int elem),
unique(),splice(iterator pos,list &ls2)//splice后ls2为空
merge(list &ls2),reverse(),
sort()//这里注意对于sort只能用list自带的成员函数,
//因为对于算法sort()必须支持随机存取的容器才能使用