list容器(20221117)

news2024/11/25 2:56:21

一、list容器

1、基本概念

功能:将数据进行链式存储

链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过指针实现的

链表由一系列的节点组成;

节点的组成:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域;

STL的链表是一个双向循环链表

链表list中的迭代器只支持前移或后移,属于双向迭代器。

链表优点:

1)可以对任意的位置进行快速的插入或删除元素。

2)采用动态分配内存,不会造成内存的浪费和溢出

缺点:

1)容器遍历速度没有数组快。

2)占用的空间比数组大

list有一个重要的性质:插入和删除操作都不会造成原有list迭代器失效,这在vector是不成立的。

2、list构造函数

与vector构造函数相同;

如默认构造:

list<T>L;

3、赋值和交换操作

与vector等其他迭代器类似

函数原型:

1)assign(beg,end); //将[beg,end]区间赋值

2)assign(n,elem);

3)重载=运算符

4)swap(lst);//将lst与本身元素互换

4、大小操作

与vector相同;

5、list容器的插入与删除操作

push_back(elem);

pop_back();

push_front(elem);

pop_front();

insert(pos,elem);

insert(pos,n.elem);

insert(pos,beg,end);//在pos位置插入[beg,end) 区间的数据,无返回值

clear();//移除容器所有数据

erase(beg,end);//删除容器[beg,end)区间的数据,返回下一个数据的位置

erase(pos);//删除pos位置的数据,返回下一个数据的位置

remove(elem);//删除容器中所有与elem匹配的值

所有的位置不用索引,而是用迭代器

void test02()

{

    //反转和排序

    list<int>L;

    L.push_back(10);

    L.push_back(80);

    L.push_back(30);

    L.push_back(90);

    L.push_back(150);

    printL(L); //10 80 30 90 150

    L.reverse();

    printL(L); //150 90 30 80 10

    L.sort(); //所有不支持随机访问的迭代器不能直接用算法库中的sort形式:sort(beg,end);

    printL(L);//10 30 80 90 150 默认升序

}

6、数据存取

front(); //返回第一个元素

back();//返回最后一个元素

list在物理上不是连续空间存储的,不能像vector用at()访问某个元素,也不能用[]下标的形式进行访问元素。

L[0] 不可用;L.at(1);也不可用;

list迭代器不支持随机访问;

it++;

it--;//支持双向

it=it+1;//不支持,不支持随机访问

7、list反转和排序

reverse(); //反转

sort(); //排序

8、排序案例

描述:将Person自定义数据类型进行排序,Person属性中有姓名、年龄、身高

排序规则:按照年龄进行升序,如果年龄相同则按身高进行降序

class Person {

public:

    string m_name;

    int m_age;

    int m_height;

    Person(string name, int age,int height)

    {

        this->m_name = name;

        this->m_age = age;

        this->m_height = height;

    }

};



//定义排序规则

bool comparePerson(Person &p1,Person &p2)

{

    //按年龄做一个升序

    if (p1.m_age == p2.m_age)

    {

        return p1.m_height < p2.m_height;

    }

    return p1.m_age < p2.m_age;

}



void printLP(list<Person>&L)

{

    for (list<Person>::iterator it = L.begin(); it != L.end(); it++)

    {

        cout << "姓名:"<<(*it).m_name<< "  年龄:"<<(*it).m_age<<" 身高:"<<(*it).m_height<<endl;

    }

    cout << endl;

}

void test03()

{

    //list容器排序案例

    list<Person>P;

    //准备数据

    Person p1("L", 18, 199);

    Person p2("I", 16, 177);

    Person p3("A", 19, 192);

    Person p4("O", 20, 190);

    Person p5("C", 20, 167);

    Person p6("H", 20, 187);

    P.push_back(p1);

    P.push_back(p2);

    P.push_back(p3);

    P.push_back(p4);

    P.push_back(p5);

    P.push_back(p6);

    printLP(P);

    cout << "========排序后=======" << endl;

    P.sort(comparePerson); //comparePerson为排序规则 为一个bool值

    printLP(P);

}

注意:自定义数据类型排序,必须要指定规则。

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

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

相关文章

初探softmax

什么是softmax Softmax,又称作归一化指数函数。主要用于分类任务&#xff0c;降多分类的结果以概率的形式展现 下图展示softmax计算方法 softmax本质上是归一化网络&#xff0c;目的是将多个标量映射为一个概率分布,其输出的每一个值范围在&#xff08;0&#xff0c;1&#x…

使用 Next.js、 Prisma 和 PostgreSQL 全栈开发视频网站

通过上一篇文章&#xff0c;我们对乔巴乐高海报平台的整体架构有了初步的了解。今天我们深入到编辑器部分&#xff0c;对其中的难点和实现细节进行分析。 这是目前生产的编辑器页面&#xff1a; 不难看出和市面上大部分低代码平台一样&#xff0c;由三部分组成&#xff1a;左侧…

10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马

近年来留学人数大幅度上升&#xff0c;其中新加坡因多元的文化环境、健全的教育制度&#xff0c;深受学生、家长青睐喜爱&#xff0c;新加坡国际学校也因此成为了香饽饽。 在每年的IB成绩放榜中&#xff0c;新加坡国际学校IB表现都非常亮眼。 除了我们熟悉的华中、德威、UWC等一…

宏记录器 Macro Recorder 2.0 注册版

记录鼠标和键盘操作以无限重播...... 不再执行相同的任务两次&#xff01; Macro Recorder 像录音机一样捕捉鼠标事件和击键&#xff0c;让您在计算机上自动执行繁琐的程序。 按记录。执行操作。 Macro Recorder 记录您的鼠标移动、鼠标点击和键盘输入。就像电脑的录音机一样。…

RabbitMQ第四个实操小案例——DirectExchange

文章目录RabbitMQ第四个实操小案例——DirectExchangeRabbitMQ第四个实操小案例——DirectExchange DirectExchange&#xff1a;这种交换机的模式跟前面的Fouout&#xff08;广播&#xff09;不太一样&#xff0c;DirectExchange 会将接收到的消息根据规则路由到指定的Queue&a…

(免费分享)基于springboot,vue毕业设计管理系统

源码获取&#xff1a;关注文末gongzhonghao&#xff0c;输入011领取下载链接 开发工具IDEA ,数据库mysql5.7 &#xff0c;前后端分离 系统分学生、教师、管理员三个角色 1.学生截图 2.教师截图&#xff1a; 3.管理员截图&#xff1a; package com.cx.controller;import cn.…

C++实现哈希表。

目录 一. unordered_map unordered_set 和 map set的区别 二. 哈希 1. 哈希&#xff0c;哈希表&#xff0c;哈希函数。 2. 哈希冲突。 3. 哈希函数补充 3. 解决哈希冲突的两大方法&#xff1a;闭散列&#xff0c;开散列 闭散列 闭散列实现代码&#xff1a; 闭散列的删除…

MDF和DHF、DMR、DHR三者差异?注册与备案文件?

医疗器械研发、工艺、注册、质量人员时常会接触到DHF, DMR, DHR。这几个单词缩写不光是拼写非常相似&#xff0c;其含义也有许多相同之处&#xff0c;所以十分容易混淆。本文就来聊一聊这三者的区别和联系。 ISO13485:2016 证明符合法规要求 MDF-Medical Device File&#xf…

计算机毕业设计——税务缴纳信息管理

一.项目介绍 本项目包含管理员、普通用户两种角色 普通用户 可以浏览 首页、新闻信息、法律法规、税务政策、通知公告、留言板、个人中心、后台管理、在线咨询 普通用户进入后台管理可以修改密码、个人信息以及税务申报、填写留言 管理员用户登录可以操作 个人中心、用…

服务器证书是网络信息安全的基础

我们都清楚&#xff0c;互联网安全存在两大基本隐患&#xff0c;一是因为身份认证机制的缺位&#xff0c;使网络成为各种“钓鱼”诈骗行为的温床&#xff0c;导致互联网空间缺乏信任。互联网每时每刻都在传输数以亿万的信息&#xff0c;这些信息如果未经加密&#xff0c;就有可…

自动化测试如何区分用例集合及编写规范

目录 前言 业务量和复杂度增长现状是什么&#xff1f; 如何区分自动化测试的用例集合&#xff1f; 区分用例集合的过程要注意什么&#xff1f; 自动化测试用例选择 自动化测试用例编写 用例编写规范 结语 前言 前面的文章介绍过如何设计自动化测试case&#xff0c;有同…

一、翻越前端的三座大山——继承/原型链

文章目录原型专题前言什么是原型&#xff1f;实例和原型的关系什么是原型链&#xff1f;Object 和 Function 的继承关系原型运用例子&#xff1a;手写instanceof手写call&#xff0c;apply手写new六大继承方式原型链继承构造函数继承原型链 构造函数优化&#xff08;原型链 构…

mysql 中的锁

文章目录锁的分类锁粒度InnoDB 中的表锁InnoDB 中的行锁锁的分类 共享锁&#xff08;Shared Locks&#xff09; // 行共享锁 // 获取到当前记录的S锁&#xff08;共享锁&#xff09;&#xff0c;兼容其他事务的S锁&#xff0c;不兼容X锁&#xff08;排他锁&#xff09; select…

服务注册中心

什么是注册中心&#xff1f; 注册中心主要有三种角色&#xff1a; ● 服务提供者&#xff08;Provider&#xff09;&#xff1a;在启动时&#xff0c;向 Registry 注册自身服务&#xff0c;并向 Registry 定期发送心跳汇报存活状态。 ● 服务消费者&#xff08;Consumer&#…

HCSC: Hierarchical Contrastive Selective Coding

原型对比学习&#xff1a;图像表征与聚类中心之间的交互&#xff0c;可以简单总结为在表征空间中最大化图像特征与其所属的聚类中心的相似度。分层语义结构 自然存在于图像数据集中&#xff0c;其中几个语义相关的图像簇可以进一步集成到一个更大的簇中&#xff0c;具有更粗粒度…

Tomcat多实例部署

文章目录一、Tomcat多实例的操作步骤1、关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、安装 tomcat4、配置 tomcat 环境变量5、修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号6、修改各 tomcat 实例中的…

openpnp软件的使用 - 配置自动电动飞达

文章目录openpnp软件的使用 - 配置自动电动飞达概述笔记新建执行器(电动飞达类型)新建电动飞达的料站配置飞达的x,y位置配置飞达移动到料表面时的高度测试这个Z高度, 是否能让吸嘴取得元件?设置元件料封装使用的吸嘴.试试开始贴片贴片后的元件位置目测备注ENDopenpnp软件的使用…

实操小微风控报告中的地址信息的清洗与照面和司法数据使用

在中小微企业的大数据风控体系中&#xff0c;工商数据与司法数据是最基本也是最常见的两类信息维度&#xff0c;在企业大数据体系的应用场景中扮演着重要角色。由于企业工商与司法数据的多部分内容属于社会公开化信息&#xff0c;因此在行业市场内也是非常容易获取的&#xff0…

详解:看似遥不可及的元宇宙

导语:元宇宙是人们娱乐、生活乃至工作的虚拟时空。Roblox 这款游戏,展示了元宇宙的诸多特征。核心是数字创造、数字资产、数字交易、数字货币和数字消费,尤其是在用户体验方面,达到了真假难辨、虚实混同的境界。 大约再过15 年,互联网就可能会发生一次重大的变革。正如从…

技术 | 终端安全 | 服务器并不像您想象的那么安全

在从1到10的评分中&#xff0c;现状方法对服务器安全的有效性如何&#xff1f; 从理论上讲&#xff0c;应该是10分。保护服务器免受外界影响的途径(分段、防火墙、漏洞修补、安全解决方案等)是众所周知的。 然而&#xff0c;现实生活的结果显示出与理论的巨大差距。从红十字会…