【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.rhkb.cn/news/93394.html

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

相关文章

深度学习1:通过模型评价指标优化训练

P(Positive)表示预测为正样本&#xff0c;N(negative)表示预测为负样本&#xff0c;T(True)表示预测正确,F(False)表示预测错误。 TP&#xff1a;正样本预测正确的数量&#xff08;正确检测&#xff09; FP&#xff1a;负样本预测正确数量&#xff08;误检测&#xff09; TN…

小米有品众筹,小米上新3D打印机!米家3D打印机购买前必看的注意事项!

小米推出3D打印机&#xff0c;米家3D打印机购买前必看 3D打印机在人们的生活中发挥着巨大的作用&#xff0c;无论是在科研实验室还是家庭工作室&#xff0c;它们正以惊人的速度改变着我们的世界。最近&#xff0c;科技巨头小米也加入了这一领域&#xff0c;推出了一款全新的&q…

IT运维:使用数据分析平台监控深信服防火墙

概述 深信服防火墙自身监控可以满足绝大部分需求&#xff0c;比如哪个应用占了最大带宽&#xff0c;哪个用户访问了哪些网站&#xff1f;这里我们为什么使用鸿鹄呢&#xff1f;因为我们要的是数据的处理和分析&#xff0c;比如某个用户在某个事件都做了哪些行为&#xff0c;这个…

【人工智能124种任务大集合】-集齐了自然语言处理(NLP),计算机视觉(CV),语音识别,多模态等任务

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能124种任务大集合&#xff0c;任务集合主要包括4大类&#xff1a;自然语言处理&#xff08;NLP&#xff09;、计算机视觉&#xff08;CV&#xff09;、语音识别、多模态任务。 我这里整理了124种应用场景任…

云安全攻防(十二)之 手动搭建 K8S 环境搭建

手动搭建 K8S 环境搭建 首先前期我们准备好三台 Centos7 机器&#xff0c;配置如下&#xff1a; 主机名IP系统版本k8s-master192.168.41.141Centos7k8s-node1192.168.41.142Centos7k8s-node2192.168.41.143Centos7 前期准备 首先在三台机器上都执行如下的命令 # 关闭防火墙…

【笔试题心得】物理内存和虚拟内存的区别和联系

物理内存和虚拟内存指的是什么——区别 物理内存&#xff1a; 定义&#xff1a; 物理内存是计算机实际存在的硬件内存&#xff0c;是CPU和其他硬件设备可以直接访问的存储空间。大小限制&#xff1a; 物理内存的大小是有限的&#xff0c;取决于计算机硬件的配置&#xff0c;通…

R-Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

导读-Linux简介

Linux简介 ​ 总所周知&#xff0c;计算机系统包含硬件和软件两部分。硬件部分被称为裸机&#xff0c;主要包括中央处理器&#xff08;CPU&#xff09;、内存、外存和各种外部设备。软件部分主要包括系统软件和应用软件两部分。系统软件包括操作系统、汇编语言、编译程序、数据…

docker compose部署zookeeper

单机部署 新建docker-compose.yaml version: 3 services:zookeeper:image: zookeeper:3.5.7container_name: base-zookeeperhostname: zookeeperprivileged: truerestart: alwaysports:- 2181:2181environment:TZ: "Asia/Shanghai"volumes:- ./volumes/zookeeper/d…

蓝牙资讯|2023年Q2蓝牙耳机市场报告发布,苹果依然占据第一

市场调查机构 Canalys 发布最新报告&#xff0c;2023 年第二季度全球个人智能音频设备&#xff08;包括 TWS, 无线头戴&#xff0c;无线颈挂&#xff09;下滑了 2%&#xff0c;出货量达到 9568 万部&#xff0c;基本追平去年同期。其中&#xff0c;真无线耳机&#xff08;TWS&a…

Java语言怎么输出有颜色的字符串呢?

在Java中&#xff0c;我们应该如何输出有颜色的文字字符串呢&#xff1f; 目录 一、使用方法 二、举例说明 三、常见的颜色及其对应的ANSI转义序列 一、使用方法 在Java中&#xff0c;可以使用ANSI转义序列来改变输出文本的颜色。 二、举例说明 &#xff08;1&#xff…

Android UI自动化测试框架—SoloPi简介

1、UI自动化测试简介 软件测试简介 ​软件测试是伴随着软件开发一同诞生的&#xff0c;随着软件规模大型化&#xff0c;结构复杂化&#xff0c;软件测试也从最初的简单“调试”&#xff0c;发展到当今的自动化测试。 ​ 自动化测试是什么呢&#xff1f;自动化测试是把以人为…

Docker部署rabbitmq遇到的问题 Stats in management UI are disabled on this node

1. Stats in management UI are disabled on this node #进入rabbitmq容器 docker exec -it {rabbitmq容器名称或者id} /bin/bash#进入容器后&#xff0c;cd到以下路径 cd /etc/rabbitmq/conf.d/#修改 management_agent.disable_metrics_collector false echo management_age…

【iMessage苹果推?IM推送】群控脚本当Apple APNS推送服务器从您的应用程序接吸收注册消息时,它将为您回到一串devicetoken

推荐内容IMESSGAE相关 作者✈️IMEAE推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容3.日历推 *** …

设计模式之享元模式(Flyweight)的C++代码实现

1、享元模式提出 面向对象很好地解决了抽象问题&#xff0c;但是创建对象会带来一定的内存开销。绝大部分情况下&#xff0c;创建对象带来的内存开销是可以忽略不计的&#xff1b;在有些情况下是需要谨慎处理的&#xff0c;如类A的sizeof是50个字节&#xff0c;则创建50*1024*…

CSS实现左侧固定,右侧自适应(5种方法)

<div class"father"><!-- 左右div不能调换顺序来写 --><div class"left">固定宽度区</div><div class"right">自适应区</div> </div> 一、利用左侧浮动float右侧margin-left /* 利用浮动floatmargin…

2023年第四届全国人工智能大赛初赛晋级复赛名单公示

由深圳市科技创新委员会、鹏城实验室共同主办&#xff0c;新一代人工智能产业技术创新战略联盟&#xff08;AITISA&#xff09;承办&#xff0c;华为技术有限公司、中国工商银行股份有限公司深圳市分行、中国农业银行股份有限公司深圳市分行、中国建设银行股份有限公司深圳市分…

集合(map+set)

【数据结构1-3】集合 - 题单 - 洛谷 例题 P1551 亲戚 亲戚 - 洛谷 并查集 #include<bits/stdc.h> using namespace std; int n,m,q,f[10010],x,y,a,b; int find(int x)//找出x家的大佬 也就是二叉树的祖先节点 {if(f[x]x)//x是x的爸爸&#xff0c;简单的来说就是x没爸…

Apache JMeter:完全指南

Apache JMeter 是一款开源的性能测试工具&#xff0c;可以用于测试 Web 应用程序、FTP 服务器、数据库等各种类型的服务器。本文将以 JMeter 5.5 为例介绍 JMeter 的使用方法。 下载和安装 由于 JMeter 是使用 Java 开发的&#xff0c;因此在运行之前必须先安装 JDK。您可以在…

解读2023年上半年财报:净利润达11.08亿元,东鹏做对了什么?

“累了、困了&#xff0c;喝东鹏特饮”&#xff0c;这句朗朗上口的广告词是很多人对于功能性饮料的第一印象。而这句经典广告词背后的公司便是如今发展如日中天的东鹏饮料。近些年&#xff0c;东鹏饮料凭借快准狠的营销、推广打法&#xff0c;迅速在功能性饮料市场攻城略地&…