C++ 库 - <list>



介绍

列表是一个常用的序列容器。容器是一个保存相同类型数据的对象。列表容器实现为双向链表,因此它提供了对其数据的双向顺序访问。

列表不提供快速的随机访问,它只支持双向顺序访问。列表允许在序列中的任何位置进行插入和删除操作,时间复杂度为O(1)。

列表的元素可以散布在内存的不同块中。容器存储必要的信息以允许顺序访问其数据。列表可以在运行时从两端根据需要收缩或扩展。存储需求由内部分配器自动满足。

零大小的列表也是有效的。在这种情况下,list.begin() 和 list.end() 指向相同的位置。但是调用 front() 或 back() 的行为是未定义的。

定义

以下是来自 <list> 头文件的 std::list 的定义

template < class T, class Alloc = allocator<T> > class list;

参数

  • T − 包含的元素的类型。

    T 可以被任何其他数据类型替换,包括用户定义类型。

  • Alloc − 分配器对象的类型。

    默认情况下,使用分配器类模板,它定义了最简单的内存分配模型并且与值无关。

成员类型

以下成员类型可以用作成员函数的参数或返回类型。

序号 成员类型 定义
1 value_type T(模板的第一个参数)
2 allocator_type Alloc(模板的第二个参数)
3 reference value_type&
4 const_reference const value_type&
5 pointer value_type*
6 const_pointer const value_type*
7 iterator 指向 value_type 的随机访问迭代器
8 const_iterator 指向 const value_type 的随机访问迭代器
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 size_type size_t
12 difference_type ptrdiff_t

来自 <list> 的函数

以下是 <list> 头文件中所有方法的列表。

构造函数

序号 方法和描述
1 list::list 默认构造函数

构造一个包含零个元素的空列表。

2 list::list 填充构造函数

构造一个新的列表,包含n个元素,并将val赋值给列表的每个元素。

3 list::list 填充构造函数

构造一个新的列表,包含n元素,并将零值赋值给列表的每个元素。

4 list::list 范围构造函数

构造一个列表,其元素数量与firstlast.

5 list::list 的范围中的元素数量相同。

复制构造函数

6 list::list 构造一个列表,其中包含现有列表中每个元素的副本。

移动构造函数使用移动语义构造一个包含other

7 list::list 内容的列表。

移动构造函数使用移动语义构造一个包含other

初始化列表构造函数

序号 方法和描述
1 析构函数

list::~list

通过释放其内存来销毁列表对象。

序号 方法和描述
1 成员函数 list::assign

范围版本

2 成员函数 通过替换旧值来为列表赋值新值。

填充版本

3 成员函数 通过替换旧值来为列表赋值新值。

填充版本

4 初始化列表版本

list::back

5 返回对列表的最后一个元素的引用。

list::begin

6 返回一个指向列表第一个元素的随机访问迭代器。

list::cbegin

7 返回一个指向列表开头的常量随机访问迭代器。

list::cend

8 返回一个指向列表结尾的常量随机访问迭代器。

list::clear

9 通过从列表中删除所有元素并将列表的大小设置为零来销毁列表。

list::crbegin

10 返回一个指向列表最后一个元素的常量反向迭代器。

list::crend

11 返回一个指向列表中第一个元素之前的理论元素的常量反向迭代器。

list::emplace

12 通过在给定位置插入新元素来扩展列表。

list::emplace_back

13 在列表末尾插入新元素,并将列表大小增加一。

list::emplace_front

14 在列表开头插入新元素,并将列表大小增加一。

list::empty

15 测试列表是否为空。

list::end

16 返回一个指向列表最后一个元素的随机访问迭代器。list::erase

位置版本

17 返回一个指向列表最后一个元素的随机访问迭代器。list::assign

从列表中删除单个元素。

18 从列表中删除元素范围。

list::front

19 返回对列表第一个元素的引用。

list::get_allocator

20 返回与列表关联的分配器。 list::insert

单个元素版本通过在position

21 返回与列表关联的分配器。 通过替换旧值来为列表赋值新值。

处插入新元素来扩展迭代器。

22 返回与列表关联的分配器。 list::assign

处插入新元素来扩展迭代器。

23 返回与列表关联的分配器。 通过在容器中插入新元素来扩展列表。

移动版本

24 返回与列表关联的分配器。 通过替换旧值来为列表赋值新值。

通过在容器中插入新元素来扩展列表。

25 通过在容器中插入新元素来扩展列表

list::max_size

26 返回列表可以容纳的最大元素数。

list::merge

27 返回列表可以容纳的最大元素数。 将两个已排序的列表合并为一个。

list::merge

28 返回列表可以容纳的最大元素数。 通过在容器中插入新元素来扩展列表。

比较函数

29 返回列表可以容纳的最大元素数。 使用移动语义将两个已排序的列表合并为一个。

比较函数

30 比较函数移动版本 list::operator=

复制版本

31 比较函数移动版本 通过在容器中插入新元素来扩展列表。

通过替换旧值来为列表赋值新内容。

32 比较函数移动版本 通过替换旧值来为列表赋值新值。

通过替换旧值来为列表赋值新内容。

33 为列表赋值新内容,替换旧内容。

list::pop_back

34 从列表中删除最后一个元素。

list::pop_front

35 从列表中删除第一个元素。

list::push_back

36 从列表中删除第一个元素。 通过在容器中插入新元素来扩展列表。

list::push_back

37 在列表末尾插入新元素。

list::push_front

38 在列表末尾插入新元素。 通过在容器中插入新元素来扩展列表。

list::push_front

39 在列表开头插入新元素。

list::rbegin

40 返回一个指向列表最后一个元素的反向迭代器。

list::remove

41 从列表中删除与值匹配的元素。

list::remove_if

42 从列表中删除满足条件的元素。

list::rend

43 返回一个指向列表反向末尾的反向迭代器。

list::resize

44 返回一个指向列表反向末尾的反向迭代器。 更改列表的大小。

list::resize

45 值版本

list::reverse

46 反转列表中元素的顺序。

list::size

47 返回列表中存在的元素数量。

list::sort

48 返回列表中存在的元素数量。 将两个已排序的列表合并为一个。

list::sort

49 对列表的元素进行排序。

list::splice

50 对列表的元素进行排序。 将所有元素从列表转移到 *this。

单个元素将迭代器指向的元素i从列表x转移到.

51 对列表的元素进行排序。 通过在容器中插入新元素来扩展列表。

*this从列表转移到将所有元素从列表

52 对列表的元素进行排序。 list::assign

转移,使用移动语义。firstlast将范围内的元素转移从列表转移到.

53 对列表的元素进行排序。

单个元素移动版本将迭代器指向的元素i从列表x转移到将所有元素从列表

54 对列表的元素进行排序。 将迭代器指向的元素转移

转移,使用移动语义。firstlast将范围内的元素转移从列表转移到将所有元素从列表

55 范围和移动版本

list::swap从列表.

56 将列表的内容与另一个列表的内容交换。

list::unique

57 将列表的内容与另一个列表的内容交换。

list::unique

从列表中删除所有连续的重复元素。

广告