C++,stl,list容器详解

news2024/10/7 10:19:28

目录

1.list基本概念

2.list构造函数

3.list的赋值和交换 

4.list大小操作

 5.list的插入的删除

6.list数据存取

7.list反转和排序

排序案例


1.list基本概念

2.list构造函数

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	print(lk1);
	
	list<int>lk2(lk1.begin(),lk1.end());
	print(lk2);
	
	list<int>lk3(lk2);
	print(lk3);
	
	list<int>lk4(3,99);
	print(lk4);
	
	return 0;
}

3.list的赋值和交换 

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	print(lk1);
	
	list<int>lk2;
	lk2 = lk1;
	print(lk2);
	
	list<int>lk3;
	lk3.assign(lk2.begin(),lk2.end());
	print(lk3);
	
	list<int>lk4;
	lk4.assign(3,999);
	print(lk4);
	
	cout << "交换前:lk3 ";
	print(lk3);
	lk3.swap(lk4);
	cout << "交换后:lk3 ";
	print(lk3);
	return 0;
}

4.list大小操作

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	print(lk1);
	
	cout << lk1.empty() << endl;
	cout << lk1.size() << endl;
	
	lk1.resize(5,100);
	print(lk1);
	//指定长度比原来长默认用0来填充
	//指定长度比原来短会删除多余的部分
	
	return 0;
}

 

 5.list的插入的删除

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	lk1.push_front(334);
	lk1.push_front(45);
	
	print(lk1);
	
	lk1.pop_back();
	print(lk1);
	lk1.pop_front();
	print(lk1);
	
	list<int>::iterator it = lk1.begin();
	it++;
	lk1.insert(it,1000);
	print(lk1);
	
	lk1.erase(lk1.begin());
	print(lk1);
	
	lk1.push_back(78);
	lk1.remove(78);
	print(lk1);
	//刪除所有的78
	
	lk1.clear();
	print(lk1);
	
	cout << "結束" << endl;
	
	return 0;
}

 

6.list数据存取

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	lk1.push_front(334);
	lk1.push_front(45);
	
	print(lk1);
	
	//不支持用[]和at方式訪問
	//也不能用it = it + 1,但可以it++和it--
	//因為不支持迭代器的隨機訪問
	
	cout << lk1.front() << endl;
	cout << lk1.back() << endl;
	
	return 0;
}

 

7.list反转和排序

#include<bits/stdc++.h>
using namespace std;


void print(const list<int> &lk)
{
	for(list<int>::const_iterator it = lk.begin(); it != lk.end(); it++)
	{
		cout << *it << " ";
	}
	
	cout << endl;
	
}

bool cmp(int v1,int v2)
{
	return v1 > v2;
	//降序就讓第一個數大於第二個數
}

int main()
{
	list<int> lk1;
	
	lk1.push_back(78);
	lk1.push_back(98);
	lk1.push_back(59);
	
	lk1.push_front(334);
	lk1.push_front(45);
	
	print(lk1);
	
	lk1.reverse();
	print(lk1);
	
	//所有不支持隨機訪問迭代器的容器,不可以用標準算法
	//它內部會提供算法
	lk1.sort();
	cout << "默認從小到大:" << endl;
	print(lk1);
	lk1.sort(cmp);
	cout << "更改後變為從大到小:" << endl;
	print(lk1);
	
	return 0;
}

排序案例

#include<bits/stdc++.h>
using namespace std;

class person
{
public:
	
	person(string name,int age,int height)
	{
		this -> name = name;
		this -> age = age;
		this -> height = height;
	}
		
	string name;
	int age;
	int height;
};

bool cmp(person &p1,person &p2)
{
	if(p1.age == p2.age) return p1.height > p2.height;
	else return p1.age < p2.age;
}

int main()
{
	list<person> l;
	
	person p1("熊貓",3,180);
	person p2("企鵝",5,160);
	person p3("老虎",3,200);
	
	l.push_back(p1);
	l.push_back(p2);
	l.push_back(p3);
	
	for(list<person>::iterator it = l.begin(); it != l.end(); it++)
	{
		//小括號這裡必須加
		cout << (*it).name << ' ' << (*it).age << ' ' << (*it).height << endl;
	}
	
	cout << "排序後" << endl;
	cout << "--------------------------" << endl;
	
	l.sort(cmp);
	//自定义数据类型必须指定排序规则
	
	for(list<person>::iterator it = l.begin(); it != l.end(); it++)
	{
		//小括號這裡必須加
		cout << (*it).name << ' ' << (*it).age << ' ' << (*it).height << endl;
	}
	
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1443597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发基础:LinkedBlockingQueue全面解析!

内容概要 LinkedBlockingQueue类是以链表结构实现高效线程安全队列&#xff0c;具有出色的并发性能、灵活的阻塞与非阻塞操作&#xff0c;以及适用于生产者和消费者模式的能力&#xff0c;此外&#xff0c;LinkedBlockingQueue还具有高度的可伸缩性&#xff0c;能够在多线程环…

实战案例:将已有的 MySQL8.0 单机架构变成主从复制架构

操作步骤 修改 master 主节点 的配置&#xff08; server-id log-bin &#xff09;master 主节点 完全备份&#xff08; mysqldump &#xff09;master 主节点 创建复制用户并授权master 主节点 将完全备份文件拷贝至从节点修改 slave 从节点 的配置&#xff08; server-id rea…

Linux之umask的使用

一、umask的作用 umask值用于设置用户在创建新文件和目录时的默认权限。umask值一共有4组数字&#xff0c;其中第1组数字用于定义特殊权限&#xff0c;一般不关心&#xff0c;日常工作中大家用的更多的是后面三组数字。以下图为例&#xff0c;输入“umask”命令之后&#xff0c…

自行车 - 骑行前的准备

现在骑自行车的人越来越多了&#xff0c;公路车、山地车、折叠车&#xff0c;有通勤的&#xff0c;也有出来骑游的。为了更好享受骑行带给我们的乐趣&#xff0c;在开始骑行前&#xff0c;你的准备是否充分呢&#xff1f; 最开始&#xff0c;要评估一下天气情况&#xff0c;出车…

备战蓝桥杯---动态规划之经典背包问题

看题&#xff1a; 我们令f[i][j]为前i个物品放满容量为j的背包的最大价值。 f[i][j]max(f[i-1][j],f[i-1][j-c[i]]w[i]); 我们开始全副成负无穷。f[0][0]0;最后循环最后一行求max; 负无穷&#xff1a;0xc0c0c0c0;正无穷&#xff1a;0x3f3f3f3f 下面是v12,n6的图示&#xff…

统一身份认证系统架构设计与实践总结

随着互联网的快速发展和应用的普及&#xff0c;人们在各个网站和应用上需要不同的账号和密码进行身份认证。为了解决这个问题&#xff0c;统一身份认证系统应运而生。本文将总结统一身份认证系统的架构设计与实践经验&#xff0c;帮助读者了解如何设计和实现一个高效、安全的统…

C++:理解拷贝在变量,指针,引用以及构造函数里的意义

变量&#xff0c;指针&#xff0c;引用 //拷贝与拷贝构造函数 //拷贝&#xff08;copy&#xff09;&#xff1a;拷贝数据&#xff0c;拷贝内存 //始终是在拷贝值&#xff0c;但是指针存储的是内存的地址&#xff0c;变量存储的是数据的值 //特别注意&#xff0c;在引用里面的拷…

高亮显示不一致

先准备好测试文件 [rootnode4 ~]# cat 2.1 No. Table Name Src Count Des Count Result 1 sbtest1 100 100 PASS 2 sbtest2 200 300 NOTPASS 3 sbtest3 150 150 …

.NET命令行(CLI)常用命令

本文用于记录了.NET软件开发全生命周期各阶段常用的一些CLI命令&#xff0c;用于开发速查。 .NET命令行&#xff08;CLI&#xff09;常用命令 项目创建&#xff08;1&#xff09;查看本机SDK&#xff08;2&#xff09;查看本机可以使用的.NET版本&#xff08;3&#xff09;生成…

数据库管理-第14期 Oracle Vector DB AI-01(20240210)

数据库管理149期 2024-02-10 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xff09;1 机器学习2 向量3 向量嵌入4 向量检索5 向量数据库5 专用向量数据库的问题总结 数据库管理-第149期 Oracle Vector DB & AI-01&#xff08;20240210&#xf…

2024年腾讯云4核8G12M服务器性能测评,适合哪些使用场景?

腾讯云4核8G服务器适合做什么&#xff1f;搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以&#xff0c;腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM&#xff0c;轻量服务器和标准型CVM服务器性能是差不多的&#xff0c;轻…

chatgpt4.0怎么购买

通过虚拟卡 WildCard 的方式来升级 GPT 4.0 最快了&#xff0c;大概2分钟就可以升级完成, 而且升级 GPT 4.0 价钱也不贵&#xff0c;虚拟卡一年10美元&#xff0c;GPT4 每个月也才 20美元。如果你觉得 GPT 4.0 对你可能有帮助&#xff0c;那就赶快来升级吧&#xff01; GPT-4.0…

【机器学习300问】23、什么是主动学习?

一、带标签的数据很难获得 机器学习中&#xff0c;比如监督学习需要带有标签的训练样本才能得到模型&#xff0c;然而在以下几种场景中去获取带有标签的数据是很难的&#xff1a; 自动驾驶场景&#xff1a;对自动驾驶汽车收集的高清地图数据或实时摄像头数据进行标注&#xff…

Vue3自定义PostCss插件

Vue3自定义PostCss插件 插件功能: 实现自动转px为vw功能 1. 创建插件ts文件2. tsconfig.node.json引入插件3. vite.config.ts增加插件配置4. 编写插件内容5. 示例 插件功能: 实现自动转px为vw功能 px 固定单位,不会随着屏幕的变化而变化 vh vw 相对于视口高宽进行控制 1. 创建…

使用vue-client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能&#xff0c;在引入组件后直接客户端跳转OK&#xff0c;但是在直接加载服务端渲染的时候一直报这…

DS:顺序栈的实现

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先…

2024年度十余爆款爱心表白代码,还不进来瞅瞅?(一)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

提升MySQL访问性能

1. 读写分离 设置多个从数据库&#xff0c;从数据库可能在多个机器中。写操作在主数据库进行主数据库提供数据的主要依据 缓解了MySQL的读压力。 主从复制原理图如下 如果对于读操作有一致性要求&#xff0c;那么读操作去主数据库即可。 2. 连接池 因为一个请求必须要…

初步探索Pyglet库:打造轻量级多媒体与游戏开发利器

目录 pyglet库 功能特点 安装和导入 安装 导入 基本代码框架 导入模块 创建窗口 创建控件 定义事件 运行应用 程序界面 运行结果 完整代码 标签控件 常用事件 窗口事件 鼠标事件 键盘事件 文本事件 其它场景 网页标签 音乐播放 图片显示 祝大家新…

图神经网络与图表示学习: 从基础概念到前沿技术

目录 前言1 图的形式化定义和类型1.1 图的形式化定义1.2 图的类型 2 图表示学习2.1 DeepWalk: 融合语义相似性与图结构2.2 Node2Vec: 灵活调整随机游走策略2.3 LINE: 一阶与二阶邻接建模2.4 NetMF: 矩阵分解的可扩展图表示学习2.5 Metapath2Vec: 异构图的全面捕捉 3 图神经网络…