list容器会了吗?一文搞定它

news2024/12/23 1:57:12

这里写目录标题

  • list 数据链式存储
  • 大小操作
  • 插入操作
  • list数据存取
  • list容器的反转和排序

list 数据链式存储

list的优点
1.采用动态存储分配,不会造成内存浪费和溢出
2.链表执行插入和删除操作十分简单,修改指针即可,不需要移动大量元素

缺点:
时间(遍历)和空间(指针域)额外耗费大

重要性质:list在插入删除操作时不会造成原有list迭代器的失效,vector不成立

list构造函数 (deque)和前面的一模一样构造

list容器赋值和交换

大小操作

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
#include<list>

empty()
判断容器是否为空
capacity()
容器的容量
size()
返回容器中元素的个数
resize(int num)
重新指定容器的长度为num,
如果容器变长则以默认值填充新位置
如果容器变短,则末尾超过容器长度的元素删除
resize(int num,elem)
重新指定容器的长度为num,
如果容器变长则以elem值填充新位置
如果容器变短,则末尾超过容器长度的元素删除

插入操作

push_back(elem);
在容器尾部插入一个元素
pop_back();
删除容器中最后一个元素
push_front(elem);
在容器开头插入一个元素
pop_front();
在容器开头删除第一个元素
insert(pos,elem);
在pos插入elem元素的拷贝,返回新数据的位置
insert(pos,n,elem)
在pos位置插入n个elem,无返回值
insert(pos,beg,end)
在pos插入区间【beg,end】的数据,返回下一个数据的位置
clear();
移除容器中所有的数据
erase(beg,end);
删除区间【beg,end】的元素,返回下一个元素的位置
erase(pos)
删除pos位置的数据,返回下一个数据的位置2
remove(elem)
删除容器中所有与elem元素匹配的数据

list数据存取

函数原型:
front();
访问第一个数据
back();
访问最后一个数据

list、本质是链表,数据不是连续的线性空间存储
不支持随机访问 比如采用L[],L.at();deng
迭代器只能进行(双向)++,–,不支持随机访问

list容器的反转和排序

/*
void printlist(list<int>& l)
{
	for (list<int>::iterator it = l.begin(); it !=l.end(); it++)
	{
		cout << *it<<" ";
	}
	cout << endl;
}

void test()
{
	list<int>l;//默认构造
	l.push_back(10);
	l.push_back(20);
	l.push_back(30);
	printlist(l);
	list<int>l1;
	l1 = l;//operatr= 赋值
	printlist(l1);
	//assign赋值
	list<int>l2;
	l2.assign(10, 100);
	printlist(l2);

	//jiaohua
	l1.swap(l2);
	printlist(l1);
	printlist(l2);
}
bool compere(int val,int vall)
{
	return val > vall;
}
void test01()
{
	list<int>l2;
	l2.push_back(10);
	l2.push_back(30);
	l2.push_back(20);
	l2.push_back(60);
	printlist(l2);
	//反转:
	l2.reverse();
	printlist(l2);
	//排序:
	//所有不支持随机访问的迭代器容器 不可以用标准算法
	//内部提供算法 变成调佣函数  (成员函数)
	//错误:sort(l2.begin(), l2.end());
	l2.sort();  //升序
	printlist(l2);
	//降序?提供一个函数
	l2.sort(compere);
	printlist(l2);
}
*/

//排序案例:::
//排序遍历,自定义类型排序,高级排序
/*

class person
{
public:
	person(int age,int high, string name)
	{
		this->age = age;
		this->high = high;
		this->name = name;
	}
	int age;
	string name;
	int high;
};
void printlist(list<person>& l)
{
	for (list<person>::iterator it = l.begin(); it != l.end(); it++)
	{
		cout << "年龄:" << it->age << "身高:" << it->high << "姓名:" << it->name;
		cout << endl;
	}
	
}
bool compere(person p1,person p2)
{
	if (p1.age == p2.age)
	{
		return p1.high < p2.high;
	}
	return p1.age > p2.age;//此时按年龄来降序了
}
void test02()
{
	person p1(20, 180, "小洁洁");
	person p2(22, 178, "小前钱");
	person p3(20, 160, "小短短");
	person p4(20, 170, "小中中");
	person p5(23, 190, "小大大");
	list<person>l;
	l.push_back(p1);
	l.push_back(p2);
	l.push_back(p3);
	l.push_back(p4);
	l.push_back(p5);
	printlist(l);
	//paixu:
	//直接调用l.sort();会出错,因为编译器不知道按什么来排序
	//l.sort();
	cout << endl;
	l.sort(compere);
	printlist(l);
}

int main()
{
	//test01();
	//test();
	test02();
	system("pause");
	return 0;
}

此外如果大家有购书需求,欢迎大家考虑一下清华社,直接以最低的价格买到最好的书!

详情官网链接

在这里插入图片描述

618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,
清华社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!
快来京东点击链接 IT BOOK 多得(或扫描京东二维码)查看详情吧!

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

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

相关文章

低代码开发与数智制造:数字转型的无缝结合

随着工业4.0的到来&#xff0c;数智制造已经成为制造业发展的趋势&#xff0c;而低代码开发技术则是近几年兴起的一种轻量级开发方式&#xff0c;这两者之间的结合将为制造业的数字化转型打下坚实的基础。 低代码开发平台有什么特点&#xff1f; 首先让我们来厘清一下&#xff…

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇

STC12C5A60S2最小系统板/51单片机温度显示和温度控制风扇&#xff0c;板载有DS18B20和TM16504位数码管。 项目简介 单片机课课程设计&#xff0c;要做一个智能温控风扇&#xff0c;达到设定的下限温度值就开启风扇&#xff0c;温度在上限和下限之间就按比例输出PWM占空比控制…

基于jsp+mysql+Spring+mybatis的Springboot旅游网站管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

AI回答:绩效考核有哪些方法,基本靠谱

AI回答&#xff1a;绩效考核有哪些方法&#xff0c;基本靠谱 建立有效的绩效考核机制&#xff0c;比较难 但没有考核机制&#xff0c;就无法评价优劣 趣讲大白话&#xff1a;赏罚两字&#xff0c;千古大事 【趣讲信息科技191期】 **************************** 互联网企业现在流…

11 GMM——高斯混合模型

文章目录 11 GMM——高斯混合模型11.1 模型介绍11.2 通过MLE估计参数11.3 EM求解 11 GMM——高斯混合模型 11.1 模型介绍 从几何角度来说&#xff1a; 高斯混合模型表示&#xff1a;加权平均——由多个高斯分布混合叠加而成&#xff0c;如图 公式可以表达为&#xff1a; p…

【Jmeter】提取和引用Token

1.执行获取token接口 在结果树这里&#xff0c;使用$符号提取token值。 $根节点&#xff0c;$.data.token表示提取根节点下的data节点下的token节点的值。 2.使用json提取器&#xff0c;提取token 变量路径就是把在结果树提取的路径写上。 3.使用BeanShell取样器或者BeanShell后…

(数组) 941. 有效的山脉数组 ——【Leetcode每日一题】

❓941. 有效的山脉数组 难度&#xff1a;简单 给定一个整数数组 arr&#xff0c;如果它是有效的山脉数组就返回 true&#xff0c;否则返回 false。 让我们回顾一下&#xff0c;如果 arr 满足下述条件&#xff0c;那么它是一个山脉数组&#xff1a; arr.length > 3在 0 &…

Redis指令-认识NoSQl和Redis常见的通用命令

1. 认识NoSQL 非关系型数据库 NoSQL是指一类非关系型数据库&#xff0c;它们采用的数据模型不同于传统的关系模型&#xff0c;它通常使用键值对、文档、图形等非传统的数据结构进行数据存储&#xff0c;不遵循预定义的模式和模型。NoSQL数据库通常分布式、高可扩展性&#xff0…

4.多线程之JUC并发编程1

1.List集合类不安全(以前单线程永远是安全的,多线程集合就不安全了) 都是ConcurrentModificationException并发修改异常,在有sout输出的情况下出来的,因为多线程边读边写 //并发情况下ArrayList是不安全的 可以用Vector在jdk1.0出来的,List1.2出来的加了同步锁 List listnew Ve…

瑞吉外卖业务开发

数据库 我电脑上的数据库登录指令&#xff1a;mysql -uroot -p123456常用指令&#xff1a;show databases、user 数据库名、show tables。 创建项目 创建完项目后&#xff0c;要及时检查maven仓库的配置&#xff0c;jdk的配置&#xff0c;项目的编码&#xff0c;如下图。 配…

数据同步智能化!利用ETLCloud自动化流程实现钉钉OA系统数据自动同步至数仓

钉钉数据同步需求 钉钉是一款企业级通讯和协同办公应用软件&#xff0c;钉钉为企业提供包括聊天、通讯录、日程安排、考勤打卡、审批、通知公告、文件共享、会议等功能&#xff0c;很多企业都在使用钉钉。 很多情况下我们需要把钉钉的数据拉取到数据库中&#xff0c;然后再通…

案例分享 | 汽车连接器焊锡质量检测

连接器是电脑、电视、汽车等常见产品中不可缺少的部件&#xff0c;主要由接触件、绝缘体与金属壳体组成&#xff0c;用于传输电流或信号。 汽车连接器约占全球连接器市场四分之一的份额&#xff0c;随着未来汽车产业的持续膨胀&#xff0c;市场前景广阔。连接器产品的微型化、…

RPC通用爬虫

文章目录 RPC通用爬虫一、项目案例二、Rpc原理解析三、Rpc代码分享四、自我总结 RPC通用爬虫 一、项目案例 测试网址: aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuL3NlcnZpY2UvYnVsbGV0aW5fbGlzdC5odG1sP3R5cGVhPWI2N2MzYjhhZGJkY2U3NGQ 二、Rpc原理解析 图解关系: ​ 主要包括,爬虫程…

Dockerfile应用的容器化

文章目录 Dockerfile应用的容器化应用的容器化——简介应用的容器化——详解单体应用容器化获取应用代码分析Dockerfile容器化当前应用/构建具体的镜像推送镜像到仓库运行应用程序测试总结 最佳实践利用构建缓存合并镜像 命令总结 Dockerfile应用的容器化 Docker 的核心思想是…

为什么网络安全缺口大,招聘却很少?

2023 年我国网络空间安全人才数量缺口超过了 140 万&#xff0c;就业人数却只有 10 多万&#xff0c;缺口高达了 93%。这里就有人会问了&#xff1a; 1、网络安全行业为什么这么缺人&#xff1f; 2、明明人才那么稀缺&#xff0c;为什么招聘时招安全的人员却没有那么多呢&am…

头部大模型公司进京赶考,向量数据库成为应考神器

日前&#xff0c;由品玩主办的「模型思辨」国内大模型产业生态研讨会在北京举办&#xff0c;Zilliz 与 360 集团、阿里巴巴、昆仑万维等来自大模型产业链的头部公司及投资机构参会&#xff0c;会上 Zilliz 创始人兼首席执行官星爵、360 集团创始人周鸿祎、昆仑万维创始人方汉等…

C++ 类设计的实践与理解

前言 C代码提供了足够的灵活性&#xff0c;因此对于大部分工程师来说都很难把握。本文介绍了写好C代码需要遵循的最佳实践方法&#xff0c;并在最后提供了一个工具可以帮助我们分析C代码的健壮度。 1. 尽可能尝试使用新的C标准 到2023年&#xff0c;C已经走过了40多个年头。新…

如何进行微服务测试?

微服务测试是一种特殊的测试类型&#xff0c;因为它涉及到多个独立的服务。以下是进行微服务测试的一般性步骤&#xff1a; 1. 确定系统架构 了解微服务架构对成功测试至关重要。确定每个微服务的职责、接口、依赖项和通信方式。了解这些信息可以帮助您更好地规划测试用例和测…

day09——线性回归

线性回归 一、什么是线性回归1&#xff0c;定义与公式2&#xff0c;线性回归的特征与目标的关系 二、线性回归的损失和优化原理1&#xff0c;损失函数2&#xff0c;优化算法 三、API四、实操&#xff1a;波士顿房价预测1&#xff0c;数据来源&#xff1a;scikit-learn2&#xf…

Acgis中实现栅格经纬度和行政区关联

写在前面 我是一个Acgis小白&#xff0c;写这篇博客是为了记录完成过程&#xff0c;如果有更高效的办法欢迎分享~ 我用的是Arcgis10.2。 需求描述 目前已有意大利的shp文件&#xff0c;希望将意大利划分成0.1*0.1经纬度的栅格&#xff0c;并且关联每个栅格中心点所属的省份信…