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

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

相关文章

AJAX —— 学习(二)

目录 一、利用 JSON 字符串 返回数据 &#xff08;一&#xff09;基础代码 &#xff08;二&#xff09;原理及实现 二、nodmon 工具 自动重启服务 &#xff08;一&#xff09;用途 &#xff08;二&#xff09;下载 &#xff08;三&#xff09;使用 三、IE 缓存问题 &a…

计算机网络:数据链路层 - 可靠传输协议

计算机网络&#xff1a;数据链路层 - 可靠传输协议 可靠传输概念停止-等待协议 SW回退N帧协议 GBN选择重传协议 SR 可靠传输概念 如下所示&#xff0c;帧在传输过程中受到干扰&#xff0c;产生了误码。接收方的数据链路层&#xff0c;通过真伪中的真检验序列 FCS 字段的值&…

Python环境下基于离散小波变换的信号降噪方法

Mallat创造了小波分析中的经典理论之一&#xff0c;即多分辨率分析的概念。后来&#xff0c;在Mallat与Meyer的共同努力之下&#xff0c;他们又在这一理论的基础上发明了离散小波变换的快速算法&#xff0c;这就是Mallat塔式算法&#xff0c;这种算法可以大量减少计算时间。在之…

6、Cocos Creator 2D 渲染组件:​Sprite 组件​

Sprite 组件 Sprite&#xff08;精灵&#xff09;是 2D/3D 游戏最常见的显示图像的方式&#xff0c;在节点上添加 Sprite 组件&#xff0c;就可以在场景中显示项目资源中的图片。 属性功能说明Type渲染模式&#xff0c;包括普通&#xff08;Simple&#xff09;、九宫格&#x…

Android Monkey自动化测试

monkey一般用于压力测试&#xff0c;用户模拟用户事件 monkey 基本用法 adb shell monkey [参数] [随机事件数]monkey常用命令 -v&#xff1a;用于指定反馈信息级别&#xff0c;总共分三个等级-v -v -vadb shell mokey -v -v -v 100-s&#xff1a;用于指定伪随机数生成器的种…

Apache DolphinScheduler 【安装部署】

前言 今天来学习一下 DolphinScheduler &#xff0c;这是一个任务调度工具&#xff0c;现在用的比较火爆。 1、安装部署 1.0、准备工作 1.0.1、集群规划 dolphinscheduler 比较吃内存&#xff0c;所以尽量给 master 节点多分配一点内存&#xff0c;桌面和虚拟机里能关的应用…

HomePlug AV

目录 HomePlug AV的基本概念基本术语网络概念网络实例 HomePlug AV物理层&#xff08;PHY&#xff09;HomePlug AV OFDM收发器架构PHY的调制模式FC调制和ROBO调制物理层的特点OFDM频域/时域转换开窗/槽式OFDM信号和噪声PHY发送控制——信道自适应PHY帧格式&#xff08;Symbol&a…

jupyter Notebook 默认路径修改

1. anaconda prompt 中运行 jupyter notebook --generate-config 命令&#xff0c;将在 C:\Users\Think\.jupyter文件下生成 jupyter_notebook_config.py 文件。 2.在jupyter_notebook_config.py 文件中&#xff0c;找c.NotebookApp.notebook_dir 这个变量&#xff0c; (1)若…

【Linux】详解动态库链接和加载对可执行程序底层的理解

一、动静态库链接的几种情况 如果我们同时提供动态库和静态库&#xff0c;gcc默认使用的是动态库。如果我们非要使用静态库&#xff0c;要加-static选项。如果我们只提供静态库&#xff0c;那可执行程序没办法&#xff0c;只能对该库进行静态链接&#xff0c;但程序不一定整体…

MySQL版本特性和存储引擎选择

MySQL版本特性和存储引擎选择 1.说一下MySQL 5.5 5.6 5.7 8.0 各个版本的特性 MySQL 5.5 优点: 稳定性&#xff1a;5.5版本是长期支持&#xff08;LTS&#xff09;版本&#xff0c;因此它非常稳定&#xff0c;被广泛部署在生产环境中。兼容性&#xff1a;与旧版本的MySQL和…

Golang | Leetcode Golang题解之第3题无重复字符的最长子串

题目&#xff1a; 题解&#xff1a; func lengthOfLongestSubstring(s string) int {// 哈希集合&#xff0c;记录每个字符是否出现过m : map[byte]int{}n : len(s)// 右指针&#xff0c;初始值为 -1&#xff0c;相当于我们在字符串的左边界的左侧&#xff0c;还没有开始移动r…

【C++常用函数介绍】isalpha,isalnum、isdigit、islower、isupper 用法

首先 isalpha,isalnum、isdigit、islower、isupper 的使用方法都需要用到一个头文件 #include<ctype.h>其次 系统的介绍以上函数的用法 isalpha()用来判断一个字符是否为字母 isalnum&#xff08;&#xff09;用来判断一个字符是否为数字或者字母&#xff0c;也就是说…

【数据结构】——二叉树的递归实现,看完不再害怕递归

创作不易&#xff0c;感谢三连加支持&#xff1f;&#xff01; 一 递归理解 递归无非就是相信它&#xff0c;只有你相信它&#xff0c;你才能写好递归&#xff01;为什么&#xff1f;请往下看 在进入二叉树的实现之前&#xff0c;我们得先理解一遍递归&#xff0c;可能很多…

Android JNI 调用第三方SO

最近一个项目使用了Go 编译了一个so库&#xff0c;但是这个so里面还需要使用第三方so库pdfium, 首先在Android工程把2个so库都放好 在jni中只能使用dlopen方式&#xff0c;其他的使用函数指针的方式来调用&#xff0c;和windows dll类似&#xff0c;不然虽然编译过了但是会崩溃…

SpringBoot -- 外部化配置

我们如果要对普通程序的jar包更改配置&#xff0c;那么我们需要对jar包解压&#xff0c;并在其中的配置文件中更改配置参数&#xff0c;然后再打包并重新运行。可以看到过程比较繁琐&#xff0c;SpringBoot也注意到了这个问题&#xff0c;其可以通过外部配置文件更新配置。 我…

Android Studio控制台输出中文乱码问题

控制台乱码现象 安卓在调试阶段&#xff0c;需要查看app运行时的输出信息、出错提示信息。 乱码&#xff0c;会极大的阻碍开发者前进的信心&#xff0c;不能及时的根据提示信息定位问题&#xff0c;因此我们需要查看没有乱码的打印信息。 解决步骤&#xff1a; step1: 找到st…

RUST语言变量与数据类型使用

使用之前了解: fn main() 表示程序入口点 println!("要输出的内容"); 表示格式化输出 变量与常量声明: let 变量:变量类型 变量值;let mut 变量:变量类型 变量值; const 常量:常量类型 常量值 如果 声明时不指定类型,将根据赋值类型自动推导 变量类型参与下…

词向量模型评估

一、既有范式 词向量的语言学特性&#xff1a;这部分主要通过一些具体的指标来评估词向量是否能捕捉到语言的内在规律&#xff0c;包括&#xff1a; 相似度评价指标&#xff1a;检查词向量空间中距离近的词是否与人类直觉一致&#xff0c;例如&#xff0c;利用余弦相似度来评估…

Kali WSL2(windows下安装了kali)

自从WSL2以来&#xff0c;感觉各方面也挺好的&#xff0c;有时候比vmware workstation方便&#xff0c;特别单独使用一个linux的时候。所以研究了下kali&#xff0c;也是很OK的&#xff0c;以及验证完成了。 本文参考官网&#xff1a; Kali Linux | Penetration Testing and Et…

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题 一、运行环境 1、硬件 手机型号&#xff1a;NOVA 7 系统&#xff1a;HarmonyOS版本 4.0.0 2、软件 android SDK platforms&#xff1a;14.0(API Level 34)、13.0&#xff08;API Level 33&#xff09; SDK Build-T…