Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

list

类模板   <list>

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

列表

列表是序列容器,它允许序列内任意位置的常量时间插入和擦除操作,并在两个方向上进行迭代。

列表容器实现为双链表;双链表可以将所包含的每个元素存储在不同且不相关的存储位置。 在内部,顺序是通过与前面元素的链接和后面元素的链接的关联来保持的。

它们与forward_list非常相似: 主要的区别在于forward_list对象是单链表, 因此它们只能向前迭代,以换取更小和更高效。

与其他基本标准序列容器(array、vector和deque)相比,list在插入、 提取和移动已获得迭代器的容器内任何位置的元素方面通常表现得更好, 因此在大量使用这些元素的算法(如排序算法)中也表现得更好。

与其他序列容器相比,list和forward_lists的主要缺点是它们不能直接根据元素的位置访问元素; 例如,要访问列表中的第6个元素,必须从已知位置(如开始或结束)迭代到该位置, 这需要在这两个位置之间的距离上花费线性时间。

它们还会消耗一些额外的内存来保持与每个元素关联的链接信息(对于小型元素的大列表来说, 这可能是一个重要因素)。

☲  容器特性


顺序排列
序列容器中的元素按照严格的线性顺序排列。每个元素根据它们在这个序列中的位置来访问。
双向链表
每个元素都保留了关于如何定位下一个和上一个元素的信息, 允许在特定元素(甚至是整个范围)之前或之后进行常量时间的插入和擦除操作, 但没有直接的随机访问。
分配方式
容器使用allocator对象来动态处理其存储需求。

☲  模板参数


T
所包含元素的类型。
别名为成员类型list::value_type。
Alloc
用于定义存储分配模型的allocator对象的类型。 默认情况下,使用allocator类模板,它定义了最简单的内存分配模型,并且是值独立的。
别名为成员类型list:: alloator_type。

☉  成员类型



C++98:
成员类型 定义 注释
value_type 起始模板参数(T)
allocator_type 第二个模板参数(Alloc) 默认为: allocator<value_type>
reference allocator_type::reference& 默认分配器: value_type&
const_reference allocator_type::const_reference 默认分配器: const value_type&
pointer allocator_type::pointer 默认分配器:value_type*
const_pointer allocator_type::const_pointer 默认分配器:const value_type*
iterator 一个访问value_type的随机迭代器 转换为const_iterator
const_iterator 指向const value_type的随机访问迭代器
reverse_iterator reverse_iterator<iterator>
const_reverse_iterator reverse_iterator<const_iterator> 常量反向迭代器
difference_type 一种有符号整型,相当于: iterator_traits<iterator>::difference_type
通常与ptrdiff_t相同
size_type 无符号整型,可以表示任何difference_type的非负值 通常与size_t相同

C++11:
成员类型 定义 注释
value_type 起始模板参数(T)
allocator_type 第二个模板参数(Alloc) 默认为: allocator<value_type>
reference value_type&
const_reference const value_type&
pointer allocator_traits<allocator_type>::pointer 默认分配器:value_type*
const_pointer allocator_traits<allocator_type>::const_pointer 默认分配器:const value_type*
iterator 一个访问value_type的随机迭代器 转换为const_iterator
const_iterator 指向const value_type的随机访问迭代器
reverse_iterator reverse_iterator<iterator> 反向迭代器
const_reverse_iterator reverse_iterator<const_iterator> 常量反向迭代器
difference_type 一种有符号整型,相当于: iterator_traits<iterator>::difference_type
通常与ptrdiff_t相同
size_type 无符号整型,可以表示任何difference_type的非负值 通常与size_t相同

☞ 成员函数



(constructor) 构建list对象(公众成员函数)
(destructor) list析构函数(公众成员函数)
operator= 内容赋值 (公众成员函数)
迭代器:
begin 返回指向列表容器第一个元素的迭代器。 (公众成员函数)
end 返回一个指向列表容器末尾元素的下一个元素的迭代器 (公众成员函数)
rbegin 返回指向容器中最后一个元素的反向迭代器 (公众成员函数)
rend 返回一个指向列表容器中第一个元素之前的理论元素的 反向迭代器.(公众成员函数)
cbegin 返回指向容器第一个元素的常量迭代器 (公众成员函数)
cend 返回一个指向容器末尾元素的下一个元素的常量迭代器 (公众成员函数)
crbegin 返回指向容器中最后一个元素的常量反向迭代器(公众成员函数)
cend 返回一个指向容器中第一个元素之前的理论元素的常量反向迭代器 (公众成员函数)
容量:
empty 测试容器是否为空 (公众成员函数)
size 返回元素个数(公众成员函数)
max_size 返回最大元素个数(公众成员函数)
元素访问:
front 访问首元素(公众成员函数)
back 访问最后一个元素(公众成员函数)
修改器:
assign 分配容器的内容(公众成员函数)
emplace_front 构造并在开头插入元素(公众成员函数)
push_front 在开头插入元素(公众成员函数)
pop_front 删除第一个元素(公众成员函数)
emplace_back 构造并在末尾插入元素(公众成员函数)
push_back 在末尾添加元素(公众成员函数)
pop_back 删除最后一个元素(公众成员函数)
emplace 构造并插入元素(公众成员函数)
insert 插入元素(公众成员函数)
erase 删除元素(公众成员函数)
swap 交换内容(公众成员函数)
resize 改变大小(公众成员函数)
clear 清除内容(公众成员函数)

☣ 操作



splice 从另一个forward_list转移元素(公共成员函数)
remove 按值删除元素(公共成员函数)
remove_if 移除满足条件的元素(公共成员函数)
unique 删除重复的值(公共成员函数)
merge 合并已排序的容器(公共成员函数)
sort 对容器中的元素进行排序(公共成员函数)
reverse 颠倒元素的顺序(公共成员函数)
空间配置器:
get_allocator 获取空间配置器(公众成员函数)

☣ 非成员函数重载



relational operators (list) list的关系运算符(函数模板)
swap(list) 交换list内容(函数模板)

联系我们 免责声明 关于CandCplus 网站地图