8.list容器的使用

文章目录

    • list容器
      • 1.构造函数
        • 代码工程
        • 运行结果
      • 2.赋值和交换
        • 代码工程
        • 运行结果
      • 3.大小操作
        • 代码工程
        • 运行结果
      • 4.插入和删除
        • 代码工程
        • 运行结果
      • 5.数据存取
        • 工程代码
        • 运行结果
      • 6.反转和排序
        • 代码工程
        • 运行结果

list容器

1.构造函数

/*1.默认构造-无参构造*/
/*2.通过区间的方式进行构造*/
/*3.n个elem方式构造*/
/*4.拷贝构造*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>using namespace std;
/*1.默认构造-无参构造*/
/*2.通过区间的方式进行构造*/
/*3.n个elem方式构造*/
/*4.拷贝构造*/void printList(const list<int>& d)
{for (list<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{/*1.默认构造-无参构造*/list<int>L;for (int i = 0; i < 5; i++){L.push_back(i);}printList(L);/*2.通过区间的方式进行构造*/list<int>L1(L.begin(), L.end());printList(L1);/*3.n个elem方式构造*/list<int>L3(5, 100);printList(L3);/*4.拷贝构造*/list<int>L4(L3);printList(L4);return;
}
int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

2.赋值和交换

/* 1.赋值  operator= */
/* 2.赋值  assign 迭代器区间*/
/* 3.赋值  assign n个elem的方式*/
/* 4.交换  swap*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>using namespace std;
/* 1.赋值  operator= */
/* 2.赋值  assign 迭代器区间*/
/* 3.赋值  assign n个elem的方式*/
/* 4.交换  swap*/
void printList(const list<int>& d)
{for (list<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{list<int>L;for (int i = 0; i < 5; i++){L.push_back(i);}printList(L);/* 1.赋值  operator= */list<int>L1;L1 = L;printList(L1);/* 2.赋值  assign 迭代器区间*/list<int>L2;L2.assign(L1.begin(), L1.end());printList(L2);/* 3.赋值  assign n个elem的方式*/list<int>L3;L3.assign(5, 50);printList(L3);return;
}void test02()
{list<int>L1;for (int i = 0; i < 5; i++){L1.push_back(i * 10);}cout << "交换前的L1容器的元素:";printList(L1);list<int>L2;L2.assign(5, 60);cout << "交换前的L2容器的元素:";printList(L2);L1.swap(L2);cout << "交换后的L1容器的元素:";printList(L1);cout << "交换后的L2容器的元素:";printList(L2);return;
}int main()
{test01();cout << endl << "测试swap交换容器元素" << endl;test02();return 0;
}
运行结果

在这里插入图片描述

3.大小操作

/*1.empty() 如果为不空,返回值是0*/
/*2.size() 查询容器中的数据个数*/
/*3.resize() 重新指定大小*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>using namespace std;
/*1.empty() 如果为不空,返回值是0*/
/*2.size() 查询容器中的数据个数*/
/*3.resize() 重新指定大小*/void printList(const list<int>& d)
{for (list<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{list<int>L;for (int i = 0; i < 5; i++){L.push_back(i);}printList(L);/*1.empty() 如果为不空,返回值是0*/if (0 != L.empty()){cout << "容器为空" << endl;return;}/*2.size() 查询容器中的数据个数*/cout << "容器的大小:" << L.size() << endl;/*3.resize() 重新指定大小*/L.resize(10);printList(L);L.resize(2);printList(L);return;
}int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

4.插入和删除

/*1.尾插 - push_back*/
/*2.尾删 - pop_back*/
/*3.头插 - push_front*/
/*4.头删 - pop_front*/
/*5.插入 - insert*/
/*6.删除 - erase*/
/*7.清空 - clear*/
/*8.移除 - remove*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>using namespace std;
/*1.尾插 - push_back*/
/*2.尾删 - pop_back*/
/*3.头插 - push_front*/
/*4.头删 - pop_front*/
/*5.插入 - insert*/
/*6.删除 - erase*/
/*7.清空 - clear*/
/*8.移除 - remove*/
void printList(const list<int>& d)
{for (list<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}void test01()
{list<int>L;/*1.尾插 - push_back*/L.push_back(10);L.push_back(20);/*3.头插 - push_front*/L.push_front(100);L.push_front(200);//200 100 10 20printList(L);/*2.尾删 - pop_back*/L.pop_back();/*4.头删 - pop_front*/L.pop_front();//100 10printList(L);/*5.插入 - insert*/list<int>::iterator it = L.begin();it++;L.insert(it, 2, 3000);//100 3000 3000 10printList(L);/*6.删除 - erase*/L.erase(L.begin());//3000 3000 10printList(L);/*8.移除 - remove*/L.remove(3000);//移除容器中所有的3000//10printList(L);return;
}int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

5.数据存取

/*1.利用front(),返回容器第一个元素*/
/*2.利用back(),返回容器最后一个元素*/
工程代码
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>using namespace std;
/*1.利用front(),返回容器第一个元素*/
/*2.利用back(),返回容器最后一个元素*/void test01()
{list<int>L;L.push_back(10);L.push_back(20);L.push_back(30);L.push_back(40);/*不可以使用[]和at的方式仿真list容器的元素*//*原因是:list本质是链表,不是用连续的线性空间存储,迭代器也不支持随机访问*/cout << "容器第一个元素: " << L.front() << endl;cout << "容器最后一个元素: " << L.back() << endl;list<int>::iterator it = L.begin();it++;it--;/*支持双向访问*///it = it + 1; //错误,不支持跳跃访问,即使是+1return;
}int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

6.反转和排序

/*1.反转 - reverse*/
/*2.排序 - sort*/
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>
using namespace std;
/*1.反转 - reverse*/
/*2.排序 - sort*/void printList(const list<int>& d)
{for (list<int>::const_iterator it = d.begin(); it != d.end(); it++){cout << *it << " ";}cout << endl;
}
class MyCmp
{
public:bool operator()(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(40);cout << "反转前:";printList(L);/*1.反转 - reverse*/L.reverse();cout << "反转后:";printList(L);/*2.排序 - sort*/L.sort();/*记住不支持随机访问迭代器的容器,内部会提供对应一些算法*/cout << "排序(默认升序):";printList(L);L.sort(MyCmp());cout << "排序(降序):";printList(L);return;
}int main()
{test01();return 0;
}
运行结果

在这里插入图片描述

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

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

相关文章

java-网络编程socket-聊天室-03

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 多线程并发问题 多线程的并发问题主要出现在当一个程序涉及多个线程同时运行时&#xff0c;这些线程可能会同时访问共…

Java:接口应用(Clonable 接口和深拷贝)

目录 1.引例2.Object中clone方法的实现3.Cloneable接口讲解4.深拷贝和浅拷贝4.1浅拷贝4.2深拷贝 1.引例 Java 中内置了一些很有用的接口, Clonable 就是其中之一. Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对象的 “拷贝”. 但是要想合法调用 clone 方法。必…

精密电阻阻值表和电容容值表

前面2张是电阻阻值表&#xff08;E-96/0603/1%&#xff09; 常见贴片电容的容值表

解决windows下Qt Creator显示界面过大的问题

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 问题描述 解决方法 1、右击此电脑--->属性 2、点击高级系统设置--->点击环境变量 3、 找到系…

【美团笔试题汇总】2023-08-26-美团春秋招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新小米近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

想要安装ssh?

SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于在不安全的网络上安全地进行远程登录和执行命令。它通过加密通信和身份验证机制&#xff0c;确保用户和系统之间的通信是安全的。 SSH协议的主要功能包括&#xff1a; 加密通信&#xff1a;SSH使…

虚良SEO-蜘蛛池的作用与工作原理

蜘蛛池是一种SEO优化工具&#xff0c;其主要作用是吸引搜索引擎蜘蛛到特定网站进行爬行和索引&#xff0c;从而提高网站的可见性和排名。下面分别介绍蜘蛛池的作用和工作原理。 蜘蛛池的作用&#xff1a; 提高网站收录&#xff1a; 当一个网站新发布时&#xff0c;或者长时间…

哈佛大学商业评论 --- 第三篇:真实世界中的增强现实

AR将全面融入公司发展战略&#xff01; AR将成为人类和机器之间的新接口&#xff01; AR将成为人类的关键技术之一&#xff01; 请将此文转发给您的老板&#xff01; --- 本文作者&#xff1a;Michael E.Porter和James E.Heppelmann 虽然物理世界是三维的&#xff0c;但大…

如何查询大数据信用报告?查询时需要注意的事项有哪些?

在数字化时代&#xff0c;大数据信用评分对于需要资金周转的个人或企业来说至关重要。许多机构在贷款审批过程中使用大数据信用评分作为风险控制的重要手段。因此&#xff0c;了解自己的大数据信用状况成为了常规操作。本文将详细介绍如何查询大数据信用报告以及查询时需要注意…

ES6: class类

类 class 面相对象class关键字创建类关于类的继承 面相对象 一切皆对象。 举例&#xff1a; 操作浏览器要使用window对象&#xff1b;操作网页要使用document对象&#xff1b;操作控制台要使用console对象&#xff1b; ES6中增加了类的概念&#xff0c;其实ES5中已经可以实现类…

震惊!子元素的padding/margin-top依据的是父元素的宽度!

子元素的margin-top和padding-top都是以父元素的宽度为基准 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" />…

7.java openCV4.x 入门-Mat之转换、重塑与计算

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

openEuler 22.03 SP3 安装图像桌面 UKUI

UKUI 是麒麟软件团队历经多年打造的一款 Linux 桌面&#xff0c;主要基于 GTK 和 QT 开发。与其他 UI 界面相比&#xff0c;UKUI 更加注重易用性和敏捷度&#xff0c;各元件相依性小&#xff0c;可以不依赖其他套件而独自运行&#xff0c;给用户带来亲切和高效的使用体验。 UK…

day2 | 数组 part-2 | 977 有序数组的平方、209 长度最小的子数组、59 螺旋矩阵 II

今日任务 977 有序数组的平方 (题目: . - 力扣&#xff08;LeetCode&#xff09;)209 长度最小的子数组 (题目: ​​​​​​​. - 力扣&#xff08;LeetCode&#xff09;)59 螺旋矩阵 II (题目:. - 力扣&#xff08;LeetCode&#xff09;) 有序数组的平方 (双指针) 给你一个…

如何使用 Viggle AI 生成模特动作视频

Viggle AI 是一款基于骨骼动画的 AI 工具&#xff0c;可以将图片转换为流畅且一致的角色动画。 这意味着您可以上传一张模特全身照&#xff0c;然后指定该模特要执行的动作&#xff0c;Viggle AI 会自动生成一段由该模特执行该动作的视频。 步骤 1&#xff1a;准备工作 首先&…

基于VUE实现的餐厅经营游戏项目源码

WebMOOC 餐厅游戏 项目介绍 实现了一个类游戏的餐厅经营模拟&#xff0c;涉及的前端知识有移动端 HTML 页面布局及样式实现。实现了厨师、顾客等角色的关键操作&#xff0c;完成从顾客等位、点菜、烹饪、用餐、支付的一系列状态变更的数据、信息、交互、展现的变化及处理。 …

【Redis系列】Spring Boot 集成 Redis 实现缓存功能

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

c# wpf template itemtemplate+dataGrid

1.概要 2.代码 <Window x:Class"WpfApp2.Window8"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…

SpringCloudAlibabaSeate处理分布式事务

SpringCloudAlibabaSeate处理分布式事务 1、部分面试题 微服务boot/cloud做的项目&#xff0c;你不可能只有一个数据库吧&#xff1f;那么多个数据库之间如何处理分布式事务的&#xff1f; 一个场景&#xff1a;在订单支付成功后&#xff0c;交易中心会调用订单中心的服务把订…

导入项目运行后,报错java: Cannot find JDK ‘XX‘ for module ‘XX‘

解决方案&#xff1a; 1、删除.idea和.iml文件 2、右击此module&#xff0c;点击 Open Module Settings 在 Module SDK 中选择所安装的java版本后&#xff0c;点击右下角 Apply 3、再运行试试吧&#xff0c;成功&#xff01;