上一次学习了vector,是一个很好用的数据结构。但它仍存在一些问题:在数组中间插入或删除元素时往往效率不高。因此这次来学习一种新的数据结构——列表。
这个可以和vector这种数据结构对比学习,很简单。
列表:链式结构。
引入头文件:
#include <list>
构造一个list,它其实是一个双向列表。
list<int> ls={1,2,3,4,5};
我们也可以通过迭代器遍历列表:
list<int>::iterator it=ls.begin();
学过数据结构这门课的都应该知道,数组(也就是vector)那种数据结构属于顺序存储方式,它是支持随机访问的,但链式存储结构(如list)并不支持随机访问,因此,我们在通过迭代器遍历列表时,是不可以像遍历vector那样跳跃式递增访问的:
//it是一个列表的迭代器
it=it+2;//这种是错误的!!因为列表不支持随机访问,只能顺着链子找
it++;//仅支持这种方式
在list中使用删除(erase)和插入(insert)操作,效率会更高。