【STL】4.<list>

list

前言

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

list容器

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

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

一.list初始化

cpp 复制代码
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>类型的链表

二.常用函数

cpp 复制代码
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中的元素

三.排序

cpp 复制代码
#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!!!

相关推荐
大模型铲屎官42 分钟前
【Python-Day 14】玩转Python字典(上篇):从零开始学习创建、访问与操作
开发语言·人工智能·pytorch·python·深度学习·大模型·字典
yunvwugua__44 分钟前
Python训练营打卡 Day27
开发语言·python
Java致死2 小时前
设计模式Java
java·开发语言·设计模式
zh_xuan2 小时前
c++ 类的语法3
开发语言·c++
Lester_11012 小时前
嵌入式学习笔记 - STM32 ADC 模块工作模式总结
笔记·学习
一律清风3 小时前
【Opencv】canny边缘检测提取中心坐标
c++·opencv
金融小师妹4 小时前
应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因
大数据·人工智能·算法
广州智造4 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
belldeep5 小时前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP5 小时前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python