当前位置: 首页 > news >正文

【STL】4.<list>

list

  • 前言
  • list容器
    • 一.list初始化
    • 二.常用函数
    • 三.排序
  • 总结

前言

stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。

list容器

要使用list,要包含list头文件

list(链表)完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连起来逻辑意义上的线性表,也就是说list也具有链表的主要优点,即:在链表的任意位置进行元素插入,删除操作都是快速的。

一.list初始化

list<int> l1;//创建一个空链表
list<int> l2(10);//创建一个链表其有10个空元素
list<int> l3(5, 10);//创建一个链表其中有五个元素为10
list<int> l4(l3.begin(), l3.end());//创建一个链表其内容为l3的内容
list<int> l5(l4);//创建一个链表内容为l4的内容
//遍历元素
list<int> l = { 1,2,3,4,5 };
for (list<int>::iterator i = l.begin(), i != l.end(); i++) {
	cout << *i << " ";
}
cout << endl;
//iterator(迭代器)是一种类似于指针的对象,用于遍历容器中的元素
//list<int>::iterator i : 声明了一个迭代器用于遍历list<int>类型的链表

二.常用函数

l1.push_front(n);//表示在链表最前端插入一个数据n
l2.pop_front();//表示在链表最前端删除一个元素
l3.push_back(n);//表示在链表最后端插入一个元素n
l4.pop_back();//表示在链表最后端删除一个元素
l5.insert(l5.begin(),5);//表示在l5最前端插入一个元素5
l6.insert(l6.begin(),2,5);//表示在l6最前端插入两个元素5
l7.erase(l7.begin());//表示删除l7最前端的数据
l8.erase(l8.begin(), l8.end());//表示删除l8的所有元素
l9.clear();//示删除l9的所有元素
l10.merge(l11);//合并l11到l10中
l12.size();//返回list中的元素个数
l13.swap(l14);//交换l13和l14中的元素

三.排序

#include <iostream>
#include <list>
using namespace std;
//使用自定义比较函数进行降序排列
bool cmp(const int& n1, const int& n2) {//引用传递
	return n1 > n2;
}

int main() {
	list<int> num1 = { 4,5,1,5,1,8,6,8,2,7,9 };
	list<int> num2(num1);

	num1.sort();//升序排列
	for (auto i = num1.begin(); i != num1.end(); i++) {
		cout << *i << " ";
	}
	cout << endl;

	num2.sort(cmp);//降序排列
	for (auto i = num2.begin(); i != num2.end(); i++) {
		cout << *i << " ";
	}
	cout << endl;

	num2.reverse();//降序排列
	for (auto i = num2.begin(); i != num2.end(); i++) {
		cout << *i << " ";
	}
	cout << endl;

	return 0;
}

总结

希望大家点赞收藏我会尽快更新STL!!!

相关文章:

  • kotlin 知识点 七 泛型的高级特性
  • Java 入门第一课 InteliJ IDEA 的快捷操作
  • 阿里云可观测全面拥抱 OpenTelemetry 社区
  • 【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】
  • JVM相关面试题
  • 项目实战--网页五子棋(游戏房间)(6)
  • Pytorch实现之混合成员GAN训练自己的数据集
  • MySQL 使用 `WHERE` 子句时 `COUNT(*)`、`COUNT(1)` 和 `COUNT(column)` 的区别解析
  • 第2课 树莓派镜像的烧录
  • SV基础(二):数据类型
  • C++ day6
  • 本地部署DeepSeek的硬件配置建议
  • 单目摄像头物体深度计算基础原理
  • SSL 证书是 SSL 协议实现安全通信的必要组成部分
  • js 判断数据是否为blob类型,blob数据转JSON和对象
  • selenium如何实现,开启浏览器的开发者工具模式,并且开启 toggle移动设备模拟模式
  • 大连指令数据集的创建--数据收集与预处理_02
  • DeepSeek05-大模型WebUI
  • 【从零开始学Redis】高级篇--超全总结笔记
  • [实现Rpc] 测试 | rpc部分功能联调 | debug | 理解bind
  • 菲律宾选举委员会公布中期选举结果,马科斯阵营选情未达预期
  • 蒲慕明院士:未来数十年不是AI取代人,而是会用AI的人取代不会用的
  • 申论|空间更新结合“青银共生”,助力青年发展型城区建设
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 金砖国家召开经贸联络组司局级特别会议,呼吁共同抵制单边主义和贸易保护主义
  • 紫光集团原董事长赵伟国一审被判死缓