C++,stl,list容器详解

目录

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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Ubuntu 20.04/22.04 LTS】最新 esp-matter SDK 软件编译环境搭建步骤

仓库链接&#xff1a;esp-matter SDK官方软件说明&#xff1a;ESP Matter Programming Guide官方参考文档&#xff1a;使用 Matter-SDK 快速搭建 Matter 环境 (Linux) 环境要求 Ubuntu 20.04 或 Ubuntu22.04网络环境支持访问 Gihub 在安装 esp-matter SDK 软件编译环境之前&a…

行程开关方向

平板打印机的行程开关方向通常取决于设备的特定设计和制造商的指导。一般来说&#xff0c;行程开关的方向是指当行程开关被触发时&#xff0c;设备移动的方向。例如&#xff0c;如果一个行程开关被设计为当它被触发时&#xff0c;设备会向左移动&#xff0c;那么这个行程开关的…

Oracle 几种行转列的方式 sum+decode sum+case when pivot

目录 原始数据&#xff1a; 方式一&#xff1a; 方式二&#xff1a; 方式三&#xff1a; unpivot的使用&#xff1a; 原始数据&#xff1a; 方式一&#xff1a; select t_name,sum(decode(t_item, item1, t_num, 0)) item1,sum(decode(t_item, item2, t_num, 0)) item2,s…

【51单片机】添加模块代码的常见问题(图示&代码演示)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 本章节是Lcd1602章节的一部分&#xff0c;以把4个Lcd驱动程序添加为例子&#xff0c;完整传送门在下方传送门 欢迎订阅 YY滴C专栏&…

【蓝桥杯冲冲冲】[CEOI2015 Day2] 世界冰球锦标赛

蓝桥杯备赛 | 洛谷做题打卡day32 文章目录 蓝桥杯备赛 | 洛谷做题打卡day32题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示样例解释 题解代码我的一些话 [CEOI2015 Day2] 世界冰球锦标赛 题目描述 译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的…

三、OpenAI所有模型介绍

1. 综述 OpenAI API开发了具有各种能力的模型。可以根据不同的需求选择不同的模型并进行精调。 模型描述GPT-4、GPT-4 Turbo一组从GPT-3.5升级后的模型&#xff0c;能够生成自然语言和代码GPT-3.5 Turbo一组从GPT-3.5升级后的模型&#xff0c;能够生成自然语言和代码DALL.E能…

政安晨:示例演绎机器学习中(深度学习)神经网络的数学基础——快速理解核心概念(二){两篇文章讲清楚}

这一篇与上一篇是兄弟篇&#xff0c;意在通过两篇文章讲清楚深度学习中神经网络的数学基础&#xff0c;第一次看到这篇文章的小伙伴可以从上一篇文章看起&#xff08;包括搭建环境等等都在上一篇&#xff09;&#xff0c;上一篇链接如下&#xff1a; 政安晨&#xff1a;示例演…

Aethir和Well-Link Tech携手革新云游戏,释放人工智能(AI)潜力

​Aethir将为Well-Link Tech的2亿用户提供先进的GPU计算能力&#xff0c;大幅提升他们的游戏体验。 新加坡&#xff0c;2024年2月7日 - 先驱性的去中心化GPU网络Aethir与实时云渲染技术领导者Well-Link Tech携手共创云游戏和元宇宙发展的新时代。 借助Well-Link Tech对领先游戏…

ECMAScript Modules规范的示例详解

ECMAScript Modules&#xff08;ESM&#xff09;是JavaScript中用于模块化开发的规范&#xff0c;它允许开发者将代码分割成多个独立的文件&#xff0c;以提高代码的可维护性和可重用性。下面是一个ECMAScript Modules规范的示例详解&#xff1a; 创建模块 1.1 导出变量 在一个…

STL之list容器的介绍与模拟实现+适配器

STL之list容器的介绍与模拟实现适配器 1. list的介绍2. list容器的使用2.1 list的定义2.2 list iterator的使用2.3 list capacity2.4 list element access2.5 list modifiers2.6 list的迭代器失效 3. list的模拟实现3.1 架构搭建3.2 迭代器3.2.1 正向迭代器3.2.2反向迭代器适配…

深度学习技巧应用36-深度学习模型训练中的超参数调优指南大全,总结相关问题与答案

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用36-深度学习模型训练中的超参数调优指南大全,总结相关问题与答案。深度学习模型训练中的调优指南大全概括了数据预处理、模型架构设计、超参数优化、正则化策略和训练技巧等多个关键方面,以提升模型性能和泛化能力。 …

申请SSL证书怎么进行域名验证?域名验证的三种方式

SSL证书是用于加密和保护Web服务器和浏览器之间通信的数字证书&#xff0c;在申请SSL证书时&#xff0c;为了防止域名被冒用&#xff0c;对于申请SSL证书的域名&#xff0c;要求先验证这个域名的所有权。而目前可用的域名验证SSL证书方式有三种&#xff1a;分别是DNS验证、邮箱…

展示wandb的数据

import wandb import matplotlib.pyplot as plt# 初始化 wandb API api wandb.Api()# 假设您想要访问的项目名为 my_project&#xff0c;并且您的 wandb 用户名为 my_username project_name "aicolab/RWKV-5-Test"# 获取项目中的runs runs api.runs(project_name)…

【MySQL】-12 MySQL索引(上篇MySQL索引类型前置-1)

MySQL索引 索引1 索引基础2 索引与优化1 选择索引的数据类型1.1 选择标识符 2 索引入门2.1 索引的类型2.1.1 B-Tree索引2.1.2 Hash索引2.1.3 空间(R-Tree)索引2.1.4 全文(Full-text)索引 索引的优点&#xff1a;索引是最好的解决方案吗&#xff1f; 索引 索引&#xff08;在MYS…

【51单片机】LCD1602(可视化液晶屏)调试工具的使用

前言 大家好吖&#xff0c;欢迎来到 YY 滴 单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY…

Stable Video Diffusion图片转视频——Stability AI开源视频模型

我们前期介绍过Stable Diffusion&#xff0c;stable diffusion模型是Stability AI开源的一个text-to-image的扩散模型&#xff0c;其模型在速度与质量上面有了质的突破&#xff0c;玩家们可以在自己消费级GPU上面来运行此模型。 文生图大模型已经火了很长一段时间了&#xff0c…

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090

20240210使用剪映识别字幕的时候的GPU占比RX580-RTX4090 2024/2/10 17:54 【使用剪映识别不同的封装格式&#xff0c;不同的音视频编码&#xff0c;对GPU的占用率可能会有比较大的不同&#xff01;】 很容易发现在在WIN10下使用剪映的时候&#xff0c;X99RX550组合。 GPU部分&…

Stable Diffusion 模型下载:RealCartoon-Realistic - V13

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 该检查点是 RealCartoon3D 检查点的一个分支。这个目标是在背景和人物中产生更“真实”的外观。我试图避免这个模型中更多的动漫、卡通和“完美”外观。这是一个肯

Linux运行级别 | 管理Linux服务

Linux运行级别 级别&#xff1a; 0关机1单用户2多用户但是不运行nfs网路文件系统3默认的运行级别&#xff0c;给一个黑的屏幕&#xff0c;只能敲命令4未使用5默认的运行级别&#xff0c;图形界面6重启切换运行级别&#xff1a; init x管理Linux服务 systemctl命令&#xf…

〖大前端 - ES6篇②〗- let和const

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…