list源码剖析

294 阅读2分钟

list源码剖析

文章目录

定义

定义:支持常数时间从容器任何位置插入和移除元素的容器。不支持快速随机访问。通常实现为双向链表。

template<
  class T,
  class Allocator = std::allocator<T>
> class list;

模板参数

  • T - 必须满足可拷贝赋值 (CopyAssignable) 和可拷贝构造 (CopyConstructible) 的要求。
  • Allocator - 用于获取/释放内存及构造/析构内存中元素的分配器。类型必须满足分配器 (Allocator) 的要求。

成员函数

特殊函数

函数名函数功能
构造函数构造list
析构函数析构list
operator=赋值给容器
assign将值赋值给容器
get_allocator返回分配器

构造函数

std::list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
std::list<std::string> words2(words1.begin(), words1.end());
std::list<std::string> words3(words1);
std::list<std::string> words4(5, "Mo");

assign

元素访问

函数名函数功能
front获得第一个元素迭代器
back获得最后一个元素迭代器

迭代器

函数名函数功能
begin,cbegin返回指向容器第一个元素的迭代器
end,cend返回指向容器尾端的迭代器
rbegin,rcbegin返回指向容器最后元素的逆向迭代器
rend,rcend返回指向前端的逆向迭代器

容量

函数名函数功能
empty检查容器是否为空
size返回容纳的元素数
max_size返回可容纳的最大元素数

修改器

函数名函数功能
clear清除内容
insert插入元素
emplace原位构造元素
erase擦除元素
push_back将元素添加到容器末尾
emplace_back在容器末尾就地构造元素
pop_back移除末元素
push_front插入元素到容器起始
emplace_front在容器头部就地构造元素
pop_front移除首元素
resize改变容器中可存储元素的个数
swap交换内容

操作

函数名函数功能
merge合并二个已排序列表
splice从另一个list中移动元素
remove,remove_if移除满足特定标准的元素
reverse将该链表的所有元素的顺序反转
unique删除连续的重复元素
sort对元素进行排序

非成员函数

函数名函数功能
operator==按照字典顺序比较 vector 中的值
operator!=
operator<
operator<=
operator>
operator>=

参考资料

cppreference

《STL源码剖析》