std::list定义于头文件
其成员类型有:
成员类型 | 定义 |
---|---|
value_type | T |
allocator_type | Allocator |
size_type | 无符号整数类型(通常是 std::size_t ) |
difference_type | 有符号整数类型(通常是 std::ptrdiff_t ) |
reference | Allocator::reference (C++11 前) value_type& (C++11 起) |
const_reference | Allocator::const_reference (C++11 前) const value_type& (C++11 起) |
pointer | Allocator::pointer (C++11 前) std::allocator_traits |
const_pointer | Allocator::const_pointer (C++11 前) std::allocator_traits |
iterator | 遗留双向迭代器 (LegacyBidirectionalIterator) |
const_iterator | 常双向迭代器 |
reverse_iterator | std::reverse_iterator |
const_reverse_iterator | std::reverse_iterator |
成员函数
构造函数:有默认构造函数,支持copy constructor, move constructor 和 列表初始化构造
析构函数:默认析构函数
迭代器相关的函数:(c 指const )
begin() cbegin() | 指向起始的迭代器 |
---|---|
end() cend() | 指向末尾的迭代器 |
rbegin() crbegin() | 指向起始的逆向迭代器 |
rend() crend() | 指向末尾的逆向迭代器 |
容量大小相关的函数
empty() | 容器是否为空即(begin() == end() ?) |
---|---|
size() | 返回元素的数量 |
max_size() | 返回可容纳的最大元素数量 |
resize() | 改变容器可容纳元素的数量 |
元素访问
front() | 访问第一个元素 |
---|---|
back() | 访问最后一个元素 |
容器操作:
push_front() | 将元素添加到容器头部 |
---|---|
emplace_front() | 在容器头部构造元素 |
pop_front() | 删除第一个元素 |
push_back() | 将元素添加到容器末尾 |
emplace_back() | 在容器尾部构造元素 |
pop_back() | 删除最后一个元素 |
emplace() | 原位构造元素 |
insert() | 插入元素 |
earse() | 擦除元素 |
swap() | 与另外一个list交换内容 |
clear() | 清空元素 |
list操作:
splice() | 从另外一个list中移动元素 |
---|---|
remove() remove_if() | 删除满足条件的元素 |
unique() | 删除连续重复的元素 |
merge() | 合并排好序的两个链表 |
sort() | 对链表排序 |
非成员函数
operator== operator!= (C++20 中移除) operator< (C++20 中移除) operator<= (C++20 中移除) operator> (C++20 中移除) operator>= (C++20 中移除) operator<=>(C++20) | 按照字典顺序比较 list 中的值 (函数模板) |
---|---|
std::swap(std::list) | 特化 std::swap 算法 (函数模板) |
erase(std::list)erase_if(std::list) (C++20) | 擦除所有满足特定判别标准的元素 (函数模板) |
作为链表的实现,list拥有自己的sort函数,而不能使用std::sort函数进行排序。std::sort使用的随机访问来进行排序,而list和forward_list都是不支持随机访问的。
示例如下:
1 |
|