C++STL之链表list

头文件

include<list>

简介

list是一种序列式容器
list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。
list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域
前驱元素指针域保存了前驱元素的首地址数据域则是本节点的数据后继元素指针域则保存了后继元素的首地址
其实,list和循环链表也有相似的地方,即:头节点的前驱元素指针域保存的是链表中尾元素的首地址,list的尾节点的后继元素指针域则保存了头节点的首地址,这样,list实际上就构成了一个双向循环链。
由于list元素节点并不要求在一段连续的内存中,显然在list中是不支持快速随机存取的,因此对于迭代器,只能通过“++”或“--”操作将迭代器移动到后继/前驱节点元素处。而不能对迭代器进行+n或-n的操作,这点,是与vector等不同的地方。

常用方法

list<int> l1  //建立一个空list
    
list<int> l2(5)  //建立一个含有5个元素的list
    
list<int> l3(5,4)   //建立一个含有5个值为4元素的list
    
list<int> l4(l2)  //使用l2初始化l4

list.push_back(a)  //将a插入list末尾 

list.front()   //获得list容器中的头部元素

list.back()    //获得list容器的最后一个元素。

list.pop_back(a)   //删除末尾元素

list.begin()   //回传指向第一个元素的Iterator

list.end()     //回传指向最末元素的下一个位置的Iterator

list.empty()   //若list内部为空,则回传true值

list.size()    //回传list内实际的元素个数

list.insert()  //插入元素

list.erase()   //删除元素

list.sort()    //对元素进行排序

list.reverse() //翻转链表

list.remove()  //删除具有指定的值的元素

list.clear()  //删除所有元素
原创文章 85 获赞 86 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43699840/article/details/105512511