在刷leetcode时发现有时要使用list方法,因此上网搜索并学习它的使用方法
1、介绍
List是一个序列容器,实现的是双向链表,每个元素都有两个指针,分别指向元素的前驱和后继。它不需要指定内存大小,因为他在存储在不连续的内存空间中,并由指针将他们连接在一起。由于链表的特点,它的查找要在O(n)的时间才能完成,不能进行内部的随机访问,即不支持[ ] 操作符和vector.at() 操作,但它允许序列快速在任意位置进行插入和删除操作作。包括在两边的pop()和push()操作
2、定义以及初始化
#include <bits/stdc++.h> using namespace std; int main() { //建立一个空list list<int> l1; //建立一个含有5个元素的list list<int> l2(5); //建立一个含有5个值为4元素的list list<int> l3(5,4); //使用l2初始化l4 list<int> l4(l2); return 0; }
3、增删改查操作
1、begin()和end():通过调用list容器的成员函数begin()得到一个指向容器起始位置的iterator,可以调用list容器的 end() 函数来得到list末端下一位置,相当于:int a[n]中的第n+1个位置a[n],实际上是不存在的,不能访问,经常作为循环结束判断结束条件使用。
2、front()和back(): 通过front()可以获得list容器中的头部元素,通过back()可以获得list容器的最后一个元素。但是有一点要注意,就是list中元素是空的时候,这时候调用front()和back()会发生什么呢?实际上会发生不能正常读取数据的情况,但是这并不报错,那我们编程序时就要注意了,个人觉得在使用之前最好先调用empty()函数判断list是否为空。
3、push_back() 和push_front():使用list的成员函数push_back和push_front插入一个元素到list中。其中push_back()从list的末端插入,而 push_front()实现的从list的头部插入。
4、pop_back和pop_front():通过删除最后一个元素,通过pop_front()删除第一个元素;序列必须不为空,如果当list为空的时候调用pop_back()和pop_front()会使程序崩掉。
4、参考资料
1、《c++(list容器学习)》https://www.cnblogs.com/loleina/p/5179677.html
2、《C++中list的用法详解》https://blog.csdn.net/yas12345678/article/details/52601578/