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);//刪除所有的78lk1.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.mzph.cn/news/677422.shtml

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

相关文章

Maui blazor ios 按设备类型设置是否启用safeArea

需求&#xff0c;新做了个app&#xff0c; 使用的是maui blazor技术&#xff0c;里面用了渐变背景&#xff0c;在默认启用SafeArea情况下&#xff0c;底部背景很突兀 由于现版本maui在SafeArea有点bug&#xff0c;官方教程的<ContentPage SafeAreafalse不生效&#xff0c;于…

H5/CSS 笔试面试考题(71-80)

简述哪种输入类型用于定义周和年控件(无时区)( ) A:date B:week C:year 面试通过率:67.0% 推荐指数: ★★★★★ 试题难度: 初级 试题类型: 选择题 答案:b 简述下列哪个元素表示外部资源?该元素可以被视为图像、嵌套的浏览上下文或插件要处理的资源。它包括各种属性…

防火墙USG6000V配置接口实验

要求:防火墙向下使用子接口分别对应生产区和办公区,所有分区设备可以ping通网关 最终效果部分示例:client1,Server1,PC2都能ping通网关 实现流程: 云要添加虚拟网卡ip(此处用的是创建的虚拟环回ip),更改端口映射为双向通道且更改编号 SW1:#要先登录防火墙初始账号和密码,然后…

SSL和Kerberos身份验证的区别?

SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09;和 Kerberos&#xff08;一种网络认证协议&#xff09;都是用于提供身份验证和加密通信的技术。它们有以下主要区别&#xff1a; 目的&#xff1a; SSL 主要用于保护基于Web的应用的通信安全。而 Kerb…

电商小程序05用户注册

目录 1 搭建页面2 设置默认跳转总结 我们上一篇拆解了登录功能&#xff0c;如果用户没有账号就需要注册了。本篇我们介绍一下注册功能的实现。 1 搭建页面 打开应用&#xff0c;点击左上角的新建页面 输入页面的名称&#xff0c;用户注册 删掉网格布局&#xff0c;添加表单容…

Qt网络编程-ZMQ的使用

不同主机或者相同主机中不同进程之间可以借助网络通信相互进行数据交互&#xff0c;网络通信实现了进程之间的通信。比如两个进程之间需要借助UDP进行单播通信&#xff0c;则双方需要知道对方的IP和端口&#xff0c;假设两者不在同一主机中&#xff0c;如下示意图&#xff1a; …

查看系统进程信息的Tasklist命令

Tasklist命令是一个用来显示运行在本地计算机上所有进程的命令行工具&#xff0c;带有多个执行参数。另外&#xff0c;Tasklist可以代替Tlist工具。通过任务管理器&#xff0c;可以查看到本机完整的进程列表&#xff0c;而且可以通过手工定制进程列表方式获得更多进程信息&…

7 scala的类构造器

在创建对象的时候&#xff0c;需要调用类的构造器。Scala 提供了主构造器和辅助构造器。 1 主构造器 与 Java 一样&#xff0c;如果我们没有特别定义&#xff0c;那么 Scala 提供的默认构造器是没有参数的。 我们可以在类名后&#xff0c;指定构造器的参数列表&#xff0c;列…

回归预测模型:MATLAB多项式回归

1. 多项式回归模型的基本原理 多项式回归是线性回归的一种扩展&#xff0c;用于分析自变量 X X X与因变量 Y Y Y之间的非线性关系。与简单的线性回归模型不同&#xff0c;多项式回归模型通过引入自变量的高次项来增加模型的复杂度&#xff0c;从而能够拟合数据中的非线性模式。…

【北邮鲁鹏老师计算机视觉课程笔记】02 filter

1 图像的类型 二进制图像&#xff1a; 灰度图像&#xff1a; 彩色图像&#xff1a; 2 任务&#xff1a;图像去噪 噪声点让我们看得难受是因为噪声点与周边像素差别很大 3 均值 滤波核 卷积核 4 卷积操作 对应相乘再累加起来 卷积核记录了权值&#xff0c;把权值套到要卷积…

GPT-4模型的创造力

超级的创造力是GPT-4等高级语言模型的重要特征之一。它们不仅能够精确地模拟和再现各类文本样式、结构和内容&#xff0c;而且在生成新的文本时&#xff0c;能够通过深度学习算法对海量训练数据中捕捉到的模式进行创新性的重组与拓展&#xff1a; 词汇创新&#xff1a;基于已学…

Redis——集群环境部署

一般情况下的Redis&#xff0c;我们都是在一台服务器上进行操作的&#xff0c;也就是说读、写以及备份操作都是在一台Redis服务器上进行的。随着项目访问量的增加&#xff0c;对Redis服务器的操作也更加频繁&#xff0c;虽然Redis读写速度都很快&#xff0c;但是一定程度上也会…

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

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

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

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

ORACLE的 软 软 软 解析!

在海鲨数据库架构师精英群里,有位朋友说ORACLE 有 软软软解析. 就是把执行计划缓存在客户端里,从而避免去服务端找执行计划. 他给了个设置方法, Weblogic console->datasource->connectionPool Statement Cache Type >LRU Statement Cache Size100 CURSOR_NUMBER …

求满二叉树两个节点之间的最短距离

求满二叉树两个节点之间的最短距离 using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace FirstSolver {internal class Program{static void Main(string[] args){BinaryTreeNode<int> root1 FullBinaryTree.CreateTree(1…

python实现基数排序

如果在给不同的整形数组排序的时候,一般会这样做,也就是先看最高位,如果最高位数值大的话也就意味着它的数值是最大的,而如果两个数字的最高位的数值是一样的,则继续比较次高位,这样依次去比较可以决定数字的排序。而对于基数排序来说,其思想是与以上的思想是不同的,基…

Node版本管理 - nvm

简介 nvm 允许用户在同一台电脑上安装并管理多个 Node.js 版本并支持快速切换&#xff0c;对于需要在不同的项目中使用不同版本的 Node.js 的开发者来说非常有用。 使用 下载安装后&#xff0c;以管理员身份打开windows控制台。 # 设置下载node安装包&#xff0c;和npm安装…

linux系统非关系型数据库redis常见问题以及好处

redis常见问题以及好处 redis常见问题缓存穿透概念解决方案布隆过滤器缓存空对象 缓存雪崩概念解决方案redis高可用限流降级数据预热 redis好处redis常见性能问题解决方案为redis加密 redis常见问题 缓存穿透 概念 缓存穿透的概念很简单&#xff0c;用户想要查询一个数据&am…

02-实现方法多值返回-pair与truple

在实际的项目开发中&#xff0c;我们经常会遇到返回多个值&#xff0c;通常我们使用Map对象、自定义Class对象等方式封装返回结果。但是这种方式&#xff0c;需要定义大量中间类&#xff0c;影响代码的整体质量。 spring 为我们提供了pair 双值与 triple 三值返回对象。 1、p…