【C++】list容器

1.list基本概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.list构造函数

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;#include<list>
//链表list容器构造函数//输出list链表
void printList(const list<int>& L)
{for (list<int>::const_iterator it = L.begin(); it != L.end(); it++){cout << *it << " ";}cout << endl; //换行
}void test01()
{//创建list容器list<int>L1; //默认构造//添加数据L1.push_back(10);L1.push_back(20);L1.push_back(30);L1.push_back(40);//遍历容器printList(L1);//区间方式构造list<int>L2(L1.begin(), L1.end());printList(L2);//拷贝构造list<int>L3(L2);printList(L3);//n个elemlist<int>L4(10,1000);printList(L4);
}
int main() 
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

3.list赋值和交换

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//list容器的赋值和交互
#include<list>
//遍历list容器
void printList(const list<int>& L)
{for (list<int>::const_iterator it = L.begin(); it != L.end(); it++){cout << *it << " ";}cout << endl;
}//赋值
void test01() 
{//创建list容器list<int>L1;//给L1赋值L1.push_back(10);L1.push_back(20);L1.push_back(30);L1.push_back(40);//遍历printList(L1);list<int>L2;L2 = L1; //operator= 赋值printList(L2);list<int>L3;L3.assign(L2.begin(), L2.end()); //按区间赋值printList(L3);list<int>L4;L4.assign(10, 1000); //n个elemprintList(L4);
}
//交换
void test02()
{//创建list容器list<int>L1;//给L1赋值L1.push_back(10);L1.push_back(20);L1.push_back(30);L1.push_back(40);list<int>L2;//给L2赋值L2.assign(10, 1000); //n个elemcout << "交换前:" << endl;printList(L1);printList(L2);L1.swap(L2); //交换cout << "交换后:" << endl;printList(L1);printList(L2);
}
int main() 
{ test01();cout << endl;test02();//**************************************system("pause");return 0;
} 

在这里插入图片描述

4.list大小操作

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//list容器大小操作
#include <list>
void printList(const list<int>& L)
{for (list<int>::const_iterator it = L.begin(); it != L.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{list<int>L1;L1.push_back(10);L1.push_back(20);L1.push_back(30);L1.push_back(40);printList(L1);//判断L1是否为空if (L1.empty()){cout << "L1为空" << endl;}else{cout << "L1不为空" << endl;cout << "L1的大小为:" << L1.size() << endl;}//重新指定大小L1.resize(10);printList(L1);//默认值定为了1000L1.resize(15, 1000);printList(L1);L1.resize(5); //把多余的值删除printList(L1);
}int main() 
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

5.list插入和删除

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//list容器的插入和删除
#include<list>
void printList(const list<int>& L)
{for (list<int>::const_iterator it = L.begin(); it != L.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{list<int>L1;//尾插L1.push_back(10);L1.push_back(20);L1.push_back(30);L1.push_back(40);//头插L1.push_front(10);L1.push_front(20);L1.push_front(30);//30 20 10 10 20 30 40printList(L1);//尾删L1.pop_back();//30 20 10 10 20 30printList(L1);//头删L1.pop_front();//20 10 10 20 30printList(L1);//insert插入L1.insert(L1.begin(), 1000);//1000 20 10 10 20 30printList(L1);//利用it来插入指定位置list<int>::iterator it = L1.begin();L1.insert(++it, 5, 20000);//1000 20000 20000 20000 20000 20000 20 10 10 20 30printList(L1);//删除it = L1.begin();L1.erase(++it);//1000 20000 20000 20000 20000 20 10 10 20 30printList(L1);//移除L1.remove(20000); //移除所有值为20000的数据//1000 20 10 10 20 30printList(L1);//清空//L1.erase(L1.begin(), L1.end()); 这种区间删除的方法也可以L1.clear();printList(L1);
}int main() 
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

6.list数据存取

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//list容器的数据存取
#include<list>
void test01()
{list<int>L1;L1.push_back(10);L1.push_back(20);L1.push_back(30);//L1[0]; //错误 不可以用[]访问list容器中的元素//L1.at(0); //错误 不可以用.at()方式访问list容器中的元素//原因是list本质链表,不是用连续性空间存储数据,迭代器也是不支持随机访问的cout << "第一个元素为:" << L1.front() << endl;cout << "最后一个元素为:" << L1.back() << endl;//list容器的迭代器是双向迭代器,不支持随机访问的list<int>::iterator it = L1.begin();it++;cout << *it << endl; //输出第二个元素:20it--;cout << *it << endl; //输出第一个元素:10//it = it + 1; //错误 不可以跳跃访问,即使是+1
}
int main()
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

7.list反转和排序

在这里插入图片描述
在这里插入图片描述

#include <iostream>
using namespace std;//list容器反转和排序
#include <list>void printList(const list<int>& L)
{for (list<int>::const_iterator it = L.begin(); it != L.end(); it++){cout << *it << " ";}cout << endl; //换行
}bool myCompare(int v1, int v2)
{// 降序 让第一个数 > 第二个数return v1 > v2;
}void test01()
{list<int>L;L.push_back(10);L.push_back(30);L.push_back(20);L.push_back(50);L.push_back(40);cout << "反转前:" << endl;//10 30 20 50 40printList(L);//反转L.reverse();cout << "反转后:" << endl;//40 50 20 30 10printList(L);//排序// sort(L.begin(), L.end()); 错误// 所有不支持随机访问迭代器的容器,不可以用标准算法algorithm// 不支持随机访问迭代器的容器,内部会提供对应一些算法//默认升序L.sort();  // 默认排序规则 从小到大 升序cout << "排序后:" << endl;printList(L);//降序L.sort(myCompare); // 降序,指定规则,从大到小printList(L);
}
int main()
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

8.排序案例

在这里插入图片描述

在这里插入图片描述

#include <iostream>
using namespace std;//排序案例
#include <list>
#include <string>//Person类 三国人物
class Person
{
public:Person(string name, int age, float height){this->m_Name = name;this->m_Age = age;this->m_Height = height;}string m_Name;int m_Age;float m_Height;
};  //忘记加 ; 导致一直报错!! 相对于类的声明 例如: int a;//遍历list
void printList(const list<Person>& L)
{for (list<Person>::const_iterator it = L.begin(); it != L.end(); it++){cout << "姓名:" << (*it).m_Name << "\t年龄:"<< (*it).m_Age << "\t身高:" << it->m_Height << endl;}
}//制定排序规则
bool comparePerson(Person& p1, Person& p2)
{//按照年龄 升序if (p1.m_Age == p2.m_Age){//年龄相同 按照身高降序return p1.m_Height > p2.m_Height;}else{return p1.m_Age < p2.m_Age;}
}void test01()
{list<Person>L1; // 创建容器//准备数据Person p1("刘备", 35, 175);Person p2("曹操", 45, 180);Person p3("孙权", 40, 170);Person p4("赵云", 25, 190);Person p5("张飞", 35, 160);Person p6("关羽", 35, 200);//插入数据L1.push_back(p1);L1.push_back(p2);L1.push_back(p3);L1.push_back(p4);L1.push_back(p5);L1.push_back(p6);cout << "排序前:" << endl;printList(L1);cout << "-------------------------" << endl;cout << "排序后:" << endl;//排序:L1.sort(comparePerson);printList(L1);
}int main()
{ test01();//**************************************system("pause");return 0;
} 

在这里插入图片描述

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

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

相关文章

STM32入门学习之定时器PWM输出

1.脉冲宽度调制PWM(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM可以理解为高低电平的占空比&#xff0c;即输出高电平时间与低电平时间的比值。PWM的应用是否广泛&#xff0c;比如在步进电机的控制中&#xff0c;可以通过P…

【MySQL系列】-回表、覆盖索引真的懂吗

【MySQL系列】-回表、覆盖索引真的懂吗 文章目录 【MySQL系列】-回表、覆盖索引真的懂吗一、MYSQL索引结构1.1 索引的概念1.2 索引的特点1.3 索引的优点1.4 索引的缺点 二、B-Tree与BTree2.1 B-Tree2.2 BTree2.3 B-Tree 与BTree树的区别2.4 那么为什么InnoDB的主键最好要搞成有…

【软件测试】接口测试工具APIpost

说实话&#xff0c;了解APIpost是因为&#xff0c;我的所有接口相关的文章下&#xff0c;都有该APIpost水军的评论&#xff0c;无非就是APIpost是中文版的postman&#xff0c;有多么多么好用&#xff0c;虽然咱也还不是什么啥网红&#xff0c;但是不知会一声就乱在评论区打广告…

【力扣每日一题】2023.8.14 合并二叉树

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们合并两棵二叉树&#xff0c;合并的方式就是把对应位置的节点的值相加&#xff0c;最后把合并后的二叉树的根节点返回出去。 这类二…

一文看尽R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD详解

一文看尽R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD详解 以下六篇文章总结详细&#xff1a; 1. 一文读懂目标检测&#xff1a;R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 2. 【深度学习】R-CNN 论文解读及个人理解 3、R-CNN论文详解 4、一文读懂Faster RCNN 5、学一百遍都…

JAVA基础知识(六)——异常处理

异常 一、异常概述与异常体系结构二、常见异常三、异常处理机制一&#xff1a;try-catch-finally四、异常处理机制二&#xff1a;throws五、手动抛出异常&#xff1a;throw六、用户自定义异常类七、开发中如何选择使用try-catch-finally还是使用throws八、如何看待代码中的编译…

goland插件推荐Rider UI Theme Pack

推荐一个goland配色插件Rider UI Theme Pack&#xff0c;里面自带visual assist配色&#xff0c;配色截图如下&#xff1a; 直接在plugins里面进行搜索或者在插件home page下载后进行安装&#xff0c; 然后按照下图进行设置即可。 此插件还适用于Jetbrains旗下的Clion和Pycharm…

WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以

本地验证时重定向iperf包有出现calltrace错误&#xff0c;经推断&#xff0c;系统PAGE_SIZE<8k时可能出现&#xff08;getconf PAGE_SIZE指令可查看&#xff09;&#xff0c;按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次&#xff0c;需要将加载…

Linux多线程【初识线程】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、什么是线程&#xff1f;1.1、基本概念1.2、线程理解1.3、进程与线程的关系…

分布式事务与解决方案

一、什么是分布式事务 首先我们知道本地事务是指事务方法中的操作只依赖本地数据库&#xff0c;可保证事务的ACID特性。而在分布式系统中&#xff0c;一个应用系统被拆分为多个可独立部署的微服务&#xff0c;在一个微服务的事务方法中&#xff0c;除了依赖本地数据库外&#…

【深入理解ES6】块级作用域绑定

1. var声明及变量提升机制 提升&#xff08;Hoisting&#xff09;机制&#xff1a;通过关键字var声明的变量&#xff0c;都会被当成在当前作用域顶部生命的变量。 function getValue(condition){if(condition){var value "blue";console.log(value);}else{// 此处…

代码随想录算法训练营第三十六天 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营第三十六天 | 435. 无重叠区间&#xff0c;763.划分字母区间&#xff0c;56. 合并区间 435. 无重叠区间:eyes:题目总结:eyes: 763.划分字母区间:eyes:题目总结:eyes: 56. 合并区间:eyes:题目总结:eyes: 435. 无重叠区间 题目链接 视频讲解 给定一个区间的…

并发编程系列-Semaphore

Semaphore&#xff0c;如今通常被翻译为"信号量"&#xff0c;过去也曾被翻译为"信号灯"&#xff0c;因为类似于现实生活中的红绿灯&#xff0c;车辆是否能通行取决于是否是绿灯。同样&#xff0c;在编程世界中&#xff0c;线程是否能执行取决于信号量是否允…

8.10 用redis实现缓存功能和Spring Cache

什么是缓存? 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。 通过Redis来缓存数据&#xff0c;减少数据库查询操作; 逻辑 每个分类的菜品保存一份缓存数据 数据库菜品数据有变更时清理缓存数据 如何将商品数据缓存起…

p-级数的上界(Upper bound of p-series)

积分判别法-The Integral Test https://math.stackexchange.com/questions/2858067/upper-bound-of-p-series https://courses.lumenlearning.com/calculus2/chapter/the-p-series-and-estimating-series-value/ 两个重要级数&#xff08;p级数和几何级数&#xff09; ht…

WPF显示初始界面--SplashScreen

WPF显示初始界面–SplashScreen 前言 WPF应用程序的运行速度快&#xff0c;但并不能在瞬间启动。当第一次启动应用程序时&#xff0c;会有一些延迟&#xff0c;因为公共语言运行时&#xff08;CLR&#xff09;首先需要初始化.NET环境&#xff0c;然后启动应用程序。 对于WPF中…

高忆管理:股票T+0交易是什么意思?t+0交易有什么好处?

股票的买卖准则有很多种&#xff0c;T0买卖便是其中之一。那么股票T0买卖是什么意思&#xff1f;t0买卖有什么优点&#xff1f;高忆管理也为大家预备了相关内容&#xff0c;以供参考。 股票T0买卖是什么意思&#xff1f; T0买卖准则是指出资者当天买入的股票能够在当天卖出&am…

SpringBoot 异步、邮件任务

异步任务 创建一个Hello项目 创建一个类AsyncService 异步处理还是非常常用的&#xff0c;比如我们在网站上发送邮件&#xff0c;后台会去发送邮件&#xff0c;此时前台会造成响应不动&#xff0c;直到邮件发送完毕&#xff0c;响应才会成功&#xff0c;所以我们一般会采用多线…

神经网络基础-神经网络补充概念-03-逻辑回归损失函数

概念 逻辑回归使用的损失函数通常是"对数损失"&#xff08;也称为"交叉熵损失"&#xff09;或"逻辑损失"。这些损失函数在训练过程中用于衡量模型预测与实际标签之间的差异&#xff0c;从而帮助模型逐步调整权重参数&#xff0c;以更好地拟合数…

c++--SLT六大组件之间的关系

1.SLT六大组件&#xff1a; 容器&#xff0c;迭代器&#xff0c;算法&#xff0c;仿函数&#xff0c;适配器&#xff0c;空间配置器 2.六大组件之间的关系 容器&#xff1a;容器是STL最基础的组件&#xff0c;没有容器&#xff0c;就没有数据&#xff0c;容器的作用就是用来存…