文章目录
一. list的几点说明
- list是带头双向循环链表,初始化有3中方式:有名,匿名,隐式类型转换
- list与其他容器不同的是:list访问,遍历的核心是迭代器。在list中没有operator[]这个接口,想实现的话倒是可以实现,但是遍历的效率会特别低。
- list的物理空间不连续,逻辑空间是连续的
- list的插入(insert)和vector相似,但是不是利用[],而是迭代器
- 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


472

被折叠的 条评论
为什么被折叠?



