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 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;
}
运行结果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FPGA实现CLAHE算法(Verilog)

在介绍CLAHE算法之前必须要先提一下直方图均衡化&#xff0c;直方图均衡化算法是一种常见的图像增强算法&#xff0c;可以让像素的亮度分配的更加均匀从而获得一个比较好的观察效果。 左边是原图&#xff0c;右边是经过直方图均衡化后图&#xff0c;可以看到肋骨什么的可以更…

鸿蒙应用开发-ArkUI 计算器

一、效果图 在正式介绍ArkUI计算器应用之前&#xff0c;我们先来一睹其风采。效果图上的计算器界面简洁大方&#xff0c;每个按钮都经过精心设计&#xff0c;颜色搭配恰到好处&#xff0c;使得整体界面既美观又实用。数字、运算符等按钮排列整齐&#xff0c;用户可以一目了然地…

鸽哒言讯独家最新im即时通讯系统双端源码下载 (中越双语)带安卓未封装、苹果未封装、PC端(全开源)+部署教程

独家最新im即时通讯系统双端源码下载 &#xff08;中越双语&#xff09;带安卓未封装、苹果未封装、PC端&#xff08;全开源&#xff09;部署教程鸽哒IM即时通讯系统是一款类似于weixin的即时通讯软件&#xff0c;具有独立开发的特点。与网络其他聊天软件相比&#xff0c;即时聊…

HTMLCSSJS

HTML基本结构 <html><head><title>标题</title></head><body>页面内容</body> </html> html是一棵DOM树, html是根标签, head和body是兄弟标签, body包括内容相关, head包含对内容的编写相关, title 与标题有关.类似html这种…

Word中插入Endnote参考文献时显示乱码

近期在写文章需要插入参考文献&#xff0c;使用Endnote插入时显示乱码&#xff0c;如下图所示&#xff1a; 文章末尾显示{ADDIN EN REFILIST } 解决方法 在网上找了诸多方法尝试也没有解决&#xff0c;最终找到一篇博客介绍了一种方法&#xff1a; word选项—高级&#xff1…

16.springboot项目下使用事务(springboot-016-transaction)

事务是一个完整的功能&#xff0c;也叫作是一个完整的业务 事务只跟什么SQL语句有关&#xff1f;事务只跟DML语句有关系&#xff1a;增删改 DML,DQL,DDL,TCL,DCL 首先添加两个依赖以及MyBatis代码自动生成插件 <!--MySql驱动--><dependency><groupId>mysql…

【C++】探索C++中的类与对象(上)

​​ &#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 ✨人生如寄&#xff0c;多忧何为 ✨ C是一种强大的编程语言&#xff0c;其面向对象的特性使得代码结构更加清晰、易于维护和扩展。在C中&#xff0c;类与…

Elasticsearch 压测实践总结

背景 搜索、ES运维场景离不开压力测试。 1.宿主机层面变更&#xff1a;参数调优 & 配置调整 & 硬件升级2.集群层面变更&#xff1a;参数调优3.索引层面变更&#xff1a;mapping调整 当然还有使用层面变更&#xff0c;使用API调优&#xff08;不属于该文章的讨论范围…

京东获得JD商品详情 API 接口(jd.item_get)的详细使用说明,包括如何通过该接口获取商品的基本信息,包括名称、品牌、产地、规格参数等

通过调用京东商品详情API接口&#xff0c;开发者可以获取商品的基本信息&#xff0c;如名称、品牌、产地、规格参数等。此外&#xff0c;还可以获取商品价格信息&#xff0c;包括原价、促销价和活动信息等。同时&#xff0c;该接口还支持获取商品的销量、评价、图片、描述等详细…

MySQL8.0.36 GTID主从同步失败排查

报错信息&#xff1a; Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 6f577885-e5d0-11ee-a94a-0242c0a80067:1 at source log 7364ffd6441c-bin.000006, end_lo…

C语言 | Leetcode C语言题解之3题无重复字符的最长子串

题目&#xff1a; 题解&#xff1a; int lengthOfLongestSubstring(char * s) {//类似于hash的思想//滑动窗口维护int left 0;int right 0;int max 0;int i,j;int len strlen(s);int haveSameChar 0;for(i 0; i < len ; i ){if(left < right){ //检测是否出现重…

编译好的C++应用程序拷贝到其它电脑,提示dll未找到依赖项的解决方法。

编译好的C应用程序拷贝到其它电脑上&#xff0c;运行时出现提示dll未找到依赖项。 由于dll依赖于其它dll&#xff0c;在开发用电脑上的环境不能完全与其它电脑相同。 解决办法是找到调用到的dll依赖的所有dll&#xff0c;拷贝到运行目录下。 在开发电脑上&#xff1a; 1、开…

7.stack容器的使用

文章目录 stack容器常用接口代码工程运行结果 stack容器 常用接口 /*1.push - 入栈*/ /*2.top - 查看栈顶元素*/ /*3.pop - 出栈*/代码工程 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stack>using namespace std;/*1.push - 入栈*/ /*2.top…

Advanced RAG 01:讨论未经优化的 RAG 系统存在的问题与挑战

编者按&#xff1a; 自 2023 年以来&#xff0c;RAG 已成为基于 LLM 的人工智能系统中应用最为广泛的架构之一。由于诸多产品的关键功能严重依赖RAG&#xff0c;优化其性能、提高检索效率和准确性迫在眉睫&#xff0c;成为当前 RAG 相关研究的核心问题。 我们今天为大家带来的这…

书生·浦语 demo1

部署 InternLM2-Chat-1.8B 模型进行智能对话 环境配置 进入开发机后&#xff0c;在 terminal 中输入环境配置命令 studio-conda -o internlm-base -t demo上面命令执行完后&#xff0c;conda会多一个虚拟环境 使用conda activate demo切换环境后&#xff0c;继续后面操作 …

SAP FI学习笔记04 - 基础知识 - 新规会计科目,用 应收账款科目 做个例子

上一章讲了 应付账款 的来源及操作。 SAP FI学习笔记03 - 应付账款-CSDN博客 本章先尝试做一个会计科目&#xff0c;然后再用 应收账款 科目做个例子。 应收账款 和 应付账款 一样&#xff0c;也有两个视图。 1&#xff0c;新建几个会计科目 这一章来尝试着创建会计科目。 …

中国智慧城管哪家做的好?

智慧城市管理综合执法系统建立全市统一的法律法规、裁量基准、执法事项、执法文书和基础信息库&#xff0c;实现从获取线索、立案、调查、处理到结案全过程的信息化和文书制作的智能化。全面支持移动执法办案&#xff0c;提高执法效率。 技术架构&#xff1a; 微服务javasprin…

每日一题:用c语言中指针实现除2操作

目录 一、要求 二、实现代码 三、实现结果 四、关于指针的相关知识 一、要求 二、实现代码 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void change(int *i) {*i*i/2; }int main() {int i;printf("请您输入一个整数&#xff1a;");scanf(&quo…

ABAP开发中常用弹窗的应用详解

在ABAP程序设计中为提示和交互的需要会经常用到弹窗&#xff0c; 所谓弹窗就是弹出一个框&#xff0c;告诉用户什么事情、需要确认什么、或者让用户输入什么内容等等&#xff0c;它价值在于通过提示、提醒、警告&#xff0c;帮助用户顺利完成业务流程中的必要操作或给用户提供实…

实时渲染 -- 材质(Materials)

一、自然界中的材质 首先了解下自然界中的材质 如上这幅图&#xff0c;不同的物体、场景、组合&#xff0c;会让我们看到不同的效果。 我们通常认为物体由其表面定义&#xff0c;表面是物体和其他物体或周围介质之间的边界面。但是物体内部的材质也会影响光照效果。我们目前只…