个人主页:落叶

当前专栏:C++专栏


目录

list的介绍及使用

list的介绍

list的应用

list的构造

构造的list中包含n个值为val的 元素

构造空的list

拷贝构造函数

用[first, last)区间中的元素构造 list

list iterator的使用

【begin+end】

【rbegin+ rend】反向迭代器

list capacity

【empty】检测list是否为空

【size 】返回list中有用节点的个数

list element access

【front】返回list的第一个节点中值的引用

【back 】返回list的最后一个节点中值的引用

list modifiers

【push_front】在list首元素前插入值为val的元素

【pop_front】删除list中第一个元素

【push_back】在list尾部插入值为val的元素

【pop_back】删除list中末了一个元素、

【insert】在list position 位置中插入值为val的元素

【erase】删除list position位置的元素

【swap】交换两个list中的元素

【clear】清空list中的管用元素

list的迭代器失效

list的模拟实现

模拟达成list

list.h

list的反向迭代器

list与vector的对比

迭代器(单向迭代器-双向迭代器-随机访问迭代器)

单向迭代器

双向迭代器 

随机访问迭代器


list的介绍及使用

list的介绍

list底层就是一个双向循环链表

forward_list底层是单链表,用法都差不多一样。

list的使用

list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已 达到可扩展的能力。以下为list中一些常见的重要接口。

list的构造

构造函数( (constructor))接口说明
list (size_type n, const value_type& val = value_type())构造的list中包含n个值为val的 元素
list()构造空的list
list (const list& x)拷贝构造函数
list (InputIterator first, InputIterator last)用[first, last)区间中的元素构造 list
构造的list中囊括n个值为val的 元素

构造了10个1的元素


构造空的list

空构造,也会构造一个哨兵位节点,方便后面插入数值。

不管是空构造还是构造有元素的,都会构造一个哨兵位节点。

list li;

拷贝构造函数

通过下面我们能够看到,li拷贝构造给li2


用[first, last)区间中的元素构造 list

也就是用迭代器区间构造list

begin从li的第一个位置的元素开始,到end最后一个位置的元素,构造给li2


list iterator的使用

函数声 明接口说明
begin + end返回第一个元素的迭代器+返回最后一个元素下一个位置的迭代器
rbegin + rend返回第一个元素的reverse_iterator,即end位置,返回最后一个元素下一个位 置的reverse_iterator,即begin位置

在哨兵位。就是begin是在1这个位置,end

【注意】 1. begin与end为正向迭代器,对迭代器执行++操作,迭代器向后移动 2. rbegin(end)与rend(begin)为反向迭代器,对迭代器执行++操作,迭代器向前移动。

【begin+end】

下面从begin位置开始打印,end位置结束。


【rbegin+ rend】反向迭代器

指向最后一个位置的元素。就是begin就

end就是指向第一个位置的元素。


list capacity

函数声明接口说明
empty检测list是否为空,是返回true,否则返回false
size返回list中有效节点的个数

否为空就是【empty】检测list

是空返回true,不是空就返回false.

下面我们可以看到,不是空返回false,就是0,是空返回true就是1.

【size 】返回list中有效节点的个数

下面我们能够看到,有效个数是7,就是有7个元素。


list element access

函数声明接口说明
front返回list的第一个节点中值的引用
back返回list的最终一个节点中值的引用