【C++】STL-list的使用

目录

1、list的使用

1.1 list的构造

1.2 list的遍历

1.3 list capacity

1.4 list element access

1.5 容量相关


list是一个带头双向循环链表

1、list的使用

1.1 list的构造

1.2 list的遍历

list只有两种遍历方式,因为没有operator[]

因为list的双向链表,所以是支持反向迭代器的,像forword_list是单链表,则只能支持正向迭代器

int main()
{
	list<int> lt;
	lt.push_back(1);
	lt.push_back(2);
	lt.push_back(3);
	lt.push_back(4);
	list<int>::iterator it = lt.begin();
	while (it != lt.end())
	{
		cout << *it <<" ";
		++it;
	}
	cout << endl;
	for (auto e : lt)
	{
		cout << e << " ";
	}
	return 0;
}

1.3 list capacity

1.4 list element access

1.5 容量相关

迭代器的分类:

支持的操作接口的角度:单向(forword_list)、双向(list)、随机(vector)

使用场景角度:(正向迭代器+反向迭代器) + const迭代器

forword_list的迭代器只能正着走

list的迭代器即可正着走,也可反着走

vector的迭代器即可正着走,也可反着走,还可以+=,即一下子跳跃几个

list的迭代器是不支持+=的,即一次只能前进或后退一个

int main()
{
	list<int> lt;
	lt.push_back(1);
	lt.push_back(2);
	lt.push_back(3);
	lt.push_back(4);
	list<int>::iterator it = lt.begin();
	//在3的前面插入一个30
	lt.insert(lt.begin() + 2, 30);
	//这样是会报错的,正确的做法是使用find先找到
	return 0;
}
int main()
{
	list<int> lt;
	lt.push_back(1);
	lt.push_back(2);
	lt.push_back(3);
	lt.push_back(4);
	list<int>::iterator pos = find(lt.begin(), lt.end(), 3);
	//这里一定要判断一下,因为若没找到会变成尾插,而想要的是在3之后插入,变成尾插是错的
	if (pos != lt.end())
	{
		lt.insert(pos, 30);
	}
	return 0;
}

关于list的迭代器失效问题,在vector中,只要是扩容操作或erase操作都可能导致迭代器失效,而list中只有erase操作才会导致迭代器失效

clear是清空链表中除了头节点以外的所有结点

splice是将一个链表连接到另一个链表中

remove是找到所给的值,并直接将这个值删除

sort可对链表中的值排序

reverse是对链表进行逆置

相关推荐

  1. List使用

    2024-05-13 14:24:02       31 阅读
  2. 【C++】list使用

    2024-05-13 14:24:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 14:24:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 14:24:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 14:24:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 14:24:02       18 阅读

热门阅读

  1. NTP 协议获取网络时间

    2024-05-13 14:24:02       9 阅读
  2. day10-16:Spring Security

    2024-05-13 14:24:02       8 阅读
  3. vue3 setup标签使用总结

    2024-05-13 14:24:02       11 阅读
  4. [力扣题解]135. 分发糖果

    2024-05-13 14:24:02       10 阅读
  5. Leetcode 3145. Find Products of Elements of Big Array

    2024-05-13 14:24:02       10 阅读
  6. 《管理评论》文本分析技术最新进展总结盘点

    2024-05-13 14:24:02       10 阅读
  7. css 实现背景图和背景色正片叠底

    2024-05-13 14:24:02       11 阅读
  8. git cherry-pick命令使用

    2024-05-13 14:24:02       14 阅读
  9. SpringMVC

    2024-05-13 14:24:02       10 阅读
  10. 深入理解深度学习中的指数移动平均(EMA)

    2024-05-13 14:24:02       10 阅读
  11. C++运算符重载

    2024-05-13 14:24:02       10 阅读
  12. BIO、NIO、多路复用

    2024-05-13 14:24:02       8 阅读
  13. 负载均衡技术

    2024-05-13 14:24:02       8 阅读