STL中的list
list的底层是一个双向链表,是使用节点来存放数据,结点的地址在空间中不一定是连续的,当向list中存入数据的时候就会新添加一个地址空间,而每删除一个数据就会释放一个空间。
list的实现图
list不支持像数组那样的随机访问,但是在插入的时候比vector要方便很多,list只需要在进行插入时修改链接的信息即可,在vector中进行插入后指向元素的迭代器会失效,但list不会,迭代器指向的元素还是原本的那个元素只是链接的元素改变了。(C++ Primer Plus中的表述)
list的常用函数
list<int> a(5);
a.push_back(1);//链表尾部插入元素
a.push_front(2);//链表头部插入元素
a.push_back(2);
auto d = a.begin();//迭代器
a.remove(2);//删除list中的所有的2
a.pop_back();//删除尾
a.pop_front();//删除头
list<int>::iterator c = a.begin();//设置迭代器 不能像数组那样+1
a.insert(++c, 4);//在迭代器的下一位插入4
缺点很明显,就是遍历的效率慢。而且不能像数组那样直接显示iterator +1,只能进行++操作