8.list容器的使用

news2025/3/12 1:40:16

文章目录

    • 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 20
	printList(L);

	/*2.尾删 - pop_back*/
	L.pop_back();
	/*4.头删 - pop_front*/
	L.pop_front();

	//100 10
	printList(L);

	/*5.插入 - insert*/
	list<int>::iterator it = L.begin();
	it++;

	L.insert(it, 2, 3000);
	//100 3000 3000 10
	printList(L);

	/*6.删除 - erase*/
	L.erase(L.begin());
	//3000 3000 10
	printList(L);

	/*8.移除 - remove*/
	L.remove(3000);//移除容器中所有的3000
	//10
	printList(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; //错误,不支持跳跃访问,即使是+1

	return;
}

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.coloradmin.cn/o/1569067.html

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

相关文章

如何从 Android 和 iPhone 中的 SIM 卡恢复已删除的联系人 [新]

在手机上&#xff0c;我们经常添加联系人&#xff0c;而很少关心联系人是存储在SIM卡中还是手机中。当我们错误删除SIM卡联系人&#xff0c;或者不当取出插入的SIM卡插入新手机时&#xff0c;那些因业务需要而添加的联系人就会消失。这可能会令人沮丧和困惑。因此&#xff0c;您…

基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现墙绘产品展示交易平台管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生&…

macbook向日葵忘记密码

macbook向日葵忘记密码 问题&#xff1a;1、切换到下面的目录&#xff1a;2、找到配置文件3、删除该配置文件4、然后就正常了 问题&#xff1a; 向日葵忘记密码的话&#xff0c;即使是卸载了重装也需要输入密码&#xff0c;界面一直如下&#xff1a; 1、切换到下面的目录&am…

浅谈TCP(2):流量控制与拥塞控制

上文浅谈TCP&#xff08;1&#xff09;&#xff1a;状态机与重传机制介绍了TCP的状态机与重传机制。本文介绍流量控制&#xff08;Flow Control&#xff0c;简称流控&#xff09;与拥塞控制&#xff08;Congestion Control&#xff09;。TCP依此保障网络的QOS&#xff08;Quali…

sparksql执行流程

1. SparkSQL的自动优化 我们前面的文章已经说过spark RDD定义好后&#xff0c;执行经过DAG sechduler划分号内存管道、逻辑任务&#xff0c;然后经由task scheduler来分配到具体worker来管理运行&#xff0c;RDD的运行会完全按照开发者的代码执行 如果开发者水平有限&#xff…

Transformers in Vision:A Survey 阅读笔记

ACM上的一篇综述&#xff0c;讨论Transformer在CV上的应用。 摘要&#xff1a; Among their salient benefits,Transformers enable modeling long dependencies between inputsequence elements and support parallel processing of sequence as compared to recurrent networ…

MFC通用静态库制作与使用

开发环境VS2013 1、新建工程&#xff0c;选择Win32 Project&#xff0c;命名&#xff0c;选择路径等 2、选择Static library &#xff0c;勾选MFC 3、点击完成。在工程中添加相应的头文件、源文件等通用功能函数或者类。 4、在其他工程引入使用。在使用的工程项目设置中Linker…

C语言-----数据在内存中的存储(1)

1.整数在内存中的存储 我们之前就了解过整数的二进制写法分别有3种&#xff0c;分别为原码&#xff0c;反码&#xff0c;补码。整型在内存中存储的是补码。 原码&#xff0c;反码&#xff0c;补码都有自己的符号位和数值位&#xff0c;符号位为1时&#xff0c;则表示负数&…

AI绘画:使用Stable Diffusion ComfyUI进行换脸:IPAdapter FaceID全面教程

在数字艺术和媒体编辑领域&#xff0c;换脸技术已经成为一种流行且强大的工具。它允许创作者将一个人物的面部特征无缝地转移到另一个人物上&#xff0c;创造出令人信服的视觉作品。Stable Diffusion ComfyUI提供了一个高效的平台&#xff0c;让用户能够轻松地实现换脸。本文将…

python和pip中常见命令和方法

玩python的同学想必没有不用pip的吧&#xff0c;pip是python包管理工具&#xff0c;和Nodejs的npm、Java的maven类似&#xff0c;这些依靠开源力量建立起的庞大软件库极大提高了开发的效率&#xff0c;下面是整理和总结pip中的常见命令和方法。 pip更新版本 python -m pip inst…

图像分割-综述篇

文章目录 图像分割算法类型全卷积FCNSegNetUNetDeeplab v1PSPNetDeeplab v2Deeplab v3Deeplab v3 基于候选区Mask RCNNMS RNN 基于GAN基于RNNReSegViTSwin TransformerSAM(Segment Anything Model) 图像分割算法类型 正如我在目标检测系列中提到的&#xff0c;图像分割&#x…

flutter官方案例context_menus【搭建与效果查看】【省时】

案例地址 https://github.com/flutter/samples/tree/main/context_menus 1&#xff1a;运行查看有什么可以快捷使用的&#xff0c;更新了些什么&#xff0c;可不可以直接复制粘贴 主要内容&#xff1a;在web端中模拟手机类型的点击长按操作&#xff0c;不能直接运行在安卓与io…

代码随想录Day27:回溯算法Part3

Leetcode 39. 组合总和 讲解前&#xff1a; 这道题其实在掌握了之前的组合问题之后再看并不是那么难&#xff0c;其关键就在于我们这道题中没有一个特定需要的组合大小&#xff0c;并且列表中的元素是可以重复使用的&#xff0c;那么比如说给的例子中的 输入: candidates [2…

使用Python获取红某书笔记详情并批量无水印下载

根据红某手最新版 请求接口必须要携带x-s x-s-c x-t,而调用官方接口又必须携带cookie,缺一不可,获取笔记详情可以通过爬取网页的形式获取&#xff0c;虽然也是无水印&#xff0c;但是一些详情信息只能获取大概&#xff0c;并不是详细的数值&#xff0c;因此既不想自己破解x-s x…

【chrome扩展】简 Tab (SimpTab)‘每日一句名言’样式

背景&#xff1a;最初参考“每日诗词”发现总是那几句&#xff0c;可以更换API接口完成“每日一句名言” 声明&#xff1a;本人不会ajax及ccs样式&#xff0c;非专业人士&#xff0c;借助CHATGPT代码生成完成。请友善交流。 每一句名言API: "https://api.xygeng.cn/open…

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型

【MATLAB第102期】基于MATLAB的BRT增强回归树多输入单输出回归预测模型 BRT&#xff0c;即Boosted Regression Trees&#xff08;增强回归树&#xff09;&#xff0c;是一种用于回归问题的集成学习方法。它结合了多个决策树模型&#xff0c;通过逐步改进的方式来提高整体模型的…

【保姆级介绍Oracle】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

开放威胁情报社区

AlienVault - Open Threat ExchangeLearn about the latest cyber threats. Research, collaborate, and share threat intelligence in real time. Protect yourself and the community against todays emerging threats.https://otx.alienvault.com/

Kotlin:for循环的几种示例

一、 打印 0 到 2 1.1 方式一&#xff1a;0 until 3 /*** 打印 0 到 2*/ fun print0To2M1(){for (inex in 0 until 3){// 不包含3print("$inex ")} }运行结果 1.2 方式二&#xff1a;inex in 0 …2 /*** 打印 0 到 2*/ fun print0To2M2(){for (inex in 0 ..2){//…

哈哈哈哈哈

欢迎使用Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 222 我们对Markdown编辑器进行了一些功能拓展与语法支持&#xff0c;…