STL中的list容器

一. list的几点说明

  1. list是带头双向循环链表,初始化有3中方式:有名,匿名,隐式类型转换
  2. list与其他容器不同的是:list访问,遍历的核心是迭代器。在list中没有operator[]这个接口,想实现的话倒是可以实现,但是遍历的效率会特别低。
  3. list的物理空间不连续,逻辑空间是连续的
  4. list的插入(insert)和vector相似,但是不是利用[],而是迭代器
  5. swap:算法库和list中都有swap,算法库中的swap是深拷贝,效率低。list中的swap是交换哨兵位的头结点。

6. 迭代器

(1)迭代器的定义:每一种容器都有对应类型的迭代器,也就是,不同容器的迭代器也不同,其功能强弱也有所不同。容器的迭代器的功能强弱,决定了该容器是否支持 STL 中的某种算法。
(2)分类
按照使用划分:迭代器,const迭代器,反向迭代器,const反向迭代器
按照功能划分:单向迭代器,双向迭代器,随机迭代器
在这里插入图片描述
在这里插入图片描述

二. 接口

1.初始化

一定要记得展开命名空间,如果不写list是哪里的,会报错

在这里插入图片描述
list是在标准库里面的

在这里插入图片描述

//常规:一个一个插入
std::list<int> lt1;
lt1.push_back(1);
lt1.push_back(2);
lt1.push_back(3);
for (auto a : lt1)
{
   
   
	std::cout << a<<" ";
}
std::cout << std::endl;
//有名
class Pos
{
   
   
public:
	int _row;
	int _col;
	Pos(int row=0,int col=0)
		:_row(row)
		,_col(col)
	{
   
   }
	Pos(const Pos& p)
		:_row(p._row)
		,_col(p._col)
	{
   
   }
};
int main()
{
   
   
	std::list<Pos> lt1;
	Pos pos1 = (2, 3);
	lt1.push_back(pos1);
	return 0;
}
//匿名
class Pos
{
   
   
public:
	int _row;
	int _col;
	Pos(int row=0,int col=0)
		:_row(row)
		,_col(col)
	{
   
   }
	Pos(const Pos& p)
		:_row(p
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值