STL list

来源:互联网 发布:怎么给win10系统优化 编辑:程序博客网 时间:2024/04/29 09:50

一,list的内存空间

vector使用的是连续的内存空间,list使用的是离散的内存空间。每当往list中插入一个元素,就会为这个元素分配一块内存空间,不同的元素的内存空间通过指针链接在一起。因此,list对内存空间的运用非常精准,一点也不浪费,而且对于任何位置的插入与删除操作,list永远是常数时间。


二,list的迭代器

list不能像vector那样以普通的指针作为迭代器,因为其内存空间不是连续的。由于list的底层是一个双向循环链表,迭代器必须具有前移、后移的能力,list的迭代器不支持随机访问操作。list还有一个重要的性质,插入与删除操作不会导致原迭代器失效。这在vector上是不成立的,因为vector的插入操作,可能导致内存的重新配置。


三,list的基本操作

1,初始化操作

int nums[] = {1, 2, 3};//建一个含三个默认值是0的元素的链表list<int> a1(3);//使用数组初始化链表list<int> a2(nums, nums + 3);


2,添加与获取元素

list<int> myList;//在链表尾部插入元素myList.push_back(1);myList.push_back(2);//获取头、尾结点的元素值int x = myList.front();int y = myList.back();


3,删除元素

list<int> myList;myList.push_back(1);myList.push_back(2);//删除队尾的元素,并且不会返回这个元素,pop_back()返回值为voidmylis.pop_back();//删除指定位置的元素myList.erase(myList.begin());


4,其他常用操作

//判断容器是否为空,如果容器中没有元素返回true,否则返回falsemyList.empty();//获取容器中元素的数目int size = myList.size();

原创粉丝点击