list源码剖析

9 篇文章 0 订阅

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源码剖析》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值