list接口介绍
创始人
2025-05-30 03:22:05

list部分接口介绍

文章目录

  • list部分接口介绍
    • resize
    • erase
    • operation系列接口
      • remove
      • sort
        • 迭代器种类
      • unique
      • merge
      • reserve
      • splice
    • 总结

resize

这个一旦小于原先的大小就会释放掉空间!

erase

这个会直接导致迭代器失效!

operation系列接口

remove

image-20221127213727840.png

就是find + erase

如果这个值有就删除,没有就无事发生!

remove(x);

sort

image-20221127213820984.png

为什不用库里面的sort而是要自己提供一个呢?

list的迭代器种类是一个双向的!

库里面的期望的是一个随机的

链表的排序是一个归并排序!

迭代器种类

  1. 单向 ++——像是单链表只能++
  2. 双向 ++/-- ——双向链表
  3. 随机 ++/-- / + / - 能支持这四种操作的就是随机迭代器

库里的sort

image-20221127214247426.png

可以从模板的名字看出其实他是希望我们给它传一个随机迭代器

库里面的排序是一个快速排序

unique

image-20221127214627261.png

这个接口是用来去重的!

但是去重要在排序的基础上!否则会失效

为什么不内部自己排序一下呢?

因为如果这个链表开始就是有序的话,不就白费功夫了

所以就是将去重和排序分开了

merge

image-20221127214859104.png

合并链表!将两个链表合并成为一个!

合并后x这个链表是空的!

reserve

image-20221127215043488.png

逆置链表

算法库里面的也可以

splice

image-20221127215159493.png

将另一个链表的节点转移到这个链表上!

  1. 全部转移
  2. 从i位置开始转移
  3. 给一个迭代器区间进行转移

是插入到前面

总结

上面的接口其实使用的都不多!

包括sort!

sort的性能测试!

#define _CRT_SECURE_NO_WARNINGS 1 
#include
#include
#include
#include
using namespace std;#include
void test_op()
{srand(time(0));const int N = 10000000;vector v;v.reserve(N);list lt1;for (int i = 0; i < N; ++i){auto e = rand();v.push_back(e);lt1.push_back(e);}int begin1 = clock();sort(v.begin(), v.end());int begin2 = clock();int end1 = clock();lt1.sort();int end2 = clock();printf("vector sort:%d\n", end1 - begin1);printf("list sort:%d\n", end2 - begin2);
}
int main()
{test_op();return 0;
}

image-20221127221906851.png

效率特别的低下!

甚至不如将list拷进vector后然后排序最后拷贝回来!

#define _CRT_SECURE_NO_WARNINGS 1 
#include
#include
#include
#include
using namespace std;#include
void test_op()
{srand(time(0));const int N = 10000000;vector v;v.reserve(N);list lt1;list lt2;for (int i = 0; i < N; ++i){auto e = rand();lt1.push_back(e);lt2.push_back(e);}//拷贝进vector 排序int begin1 = clock();for (auto e : lt1){v.push_back(e);}sort(v.begin(), v.end());size_t i = 0;//然后从vector拷回来for (auto& e : lt1){e = v[i++];}int end1 = clock();int begin2 = clock();lt2.sort();int end2 = clock();printf("vector sort:%d\n", end1 - begin1);printf("list sort:%d\n", end2 - begin2);
}
int main()
{test_op();return 0;
}

image-20221127223125446.png

即使如此速度依旧比单纯的list的sort更快!

所以大数据量的时候不要使用list的sort!

数据量小的时候还好!一旦数据量大起来的时候就不要使用list的sort!

虽然list是归并排序但是链表在数据量大之后空间的访问效率还是很低下的

所以排序使用vector

要头插头删用链表

相关内容

热门资讯

表格的进阶 系列文章目录 前端系列文章——传送门 HTML系列文章——传送门 文章目录系列文章目录html 结...
Vivado device窗口... 目录 一、前言 二、时钟site介绍 三、时钟site分布 四、时钟site驱动逻辑 一、前言 ...
数模笔记——论文写作 论文写作 各模块写作要点 数学建模论文的重要性 数学建模论文的写作是数学建模中重要的一个环节。数学建...
IDEA打印项目执行最终执行s... 一、下载插件1、MyBatis Log Plugin随着IDEA 升级到 2020.2 版本之后开始...
Harmony(鸿蒙)开发手机... Harmony环境使用Bee入门向导 一、添加jar包 将bee相关的3个jar包复制到entry包...
到底线程要怎么去编程?线程类有... 上篇文章我们介绍了到底什么是线程,线程与进程的区别,线程怎么去创建的五种...
linux环境下利用rsync... 文章目录前言插曲根据时间段同步按时间过滤文件使用 mtime 参数查找使用 newermt 进行更精...
学习周报3.19 文章目录前言文献阅读摘要简介问题定义方法结论克里金插值法(Kriging法࿰...
Java设计模式 03-原型模... 原型模式 一、克隆羊问题 现在有一只羊 tom,姓名为: tom, 年龄为࿱...
数据库select操作 插入数据时,一次插入多条数据,比多次插入多条同样的数据消耗时间少很多。 ...
搭建 Spring 源码阅读环... 1、下载gradle https://gradle.org/releases/ 解压到磁盘 2、配...
北斗星1.4排量百公里油耗(北... 本篇文章极速百科给大家谈谈北斗星1.4排量百公里油耗,以及北斗星14真实油耗72什么情况对应的知识点...
汽车安全性能排行榜(车辆安全性... 本篇文章极速百科给大家谈谈汽车安全性能排行榜,以及车辆安全性能排名对应的知识点,希望对各位有所帮助,...
门客是什么意思(君子不打上门客... 今天给各位分享门客是什么意思的知识,其中也会对君子不打上门客是什么意思进行解释,如果能碰巧解决你现在...
灶糖是啥(灶糖的功效和作用) ... 本篇文章极速百科给大家谈谈灶糖是啥,以及灶糖的功效和作用对应的知识点,希望对各位有所帮助,不要忘了收...
[CMake] CMake 进... CMake 进阶 代码生成 代码生成是指使用一些通用的描述文件,可以自动生成源代码&#...
文法的形式定义 一、序列的集合称为形式语言序列的集合称为形式语言二、形式语言的描述当语言是有穷集合时,...
人事部是干什么的(人力资源管理... 今天给各位分享人事部是干什么的的知识,其中也会对人力资源管理吃香吗进行解释,如果能碰巧解决你现在面临...
透明的反义词是什么(透明的反义... 本篇文章极速百科给大家谈谈透明的反义词是什么,以及透明的反义词是什么最佳答案对应的知识点,希望对各位...
清道夫鱼能吃吗(清道夫鱼能吃吗... 今天给各位分享清道夫鱼能吃吗的知识,其中也会对清道夫鱼能吃吗?有什么功效进行解释,如果能碰巧解决你现...
科研之友是什么(科研之友是干什... 本篇文章极速百科给大家谈谈科研之友是什么,以及科研之友是干什么的对应的知识点,希望对各位有所帮助,不...
Android framewo... 启动篇 android-12.0.0_r28\frameworks/base/services/ja...
Windows10及其Wind... 一、需求说明在日常实施运维工作中,通常需要设置指定的软件在Windows系统或Wind...
StampedLock 一、邮戳锁的介绍 邮戳锁(StampedLock)是一个java.util.concurrent.l...
宝马X5宝马X5最新报价-图片... 本篇文章极速百科给大家谈谈宝马X5宝马X5最新报价-图片-参数,以及宝马x5l报价及图片2021款对...
电机与减速机(电机与减速机如何... 本篇文章极速百科给大家谈谈电机与减速机,以及电机与减速机如何搭配对应的知识点,希望对各位有所帮助,不...
车标大全:这些汽车车标你全都认... 今天给各位分享车标大全:这些汽车车标你全都认识吗?的知识,其中也会对车标车标志大全及名字进行解释,如...
abcb式的成语(abcb式的... 本篇文章极速百科给大家谈谈abcb式的成语,以及abcb式的成语二年级对应的知识点,希望对各位有所帮...
string类(上) string类(上)1.标准库中的string类2.string类对象的...
七夕什么节(七夕什么节曰) 七... 今天给各位分享七夕什么节的知识,其中也会对七夕什么节曰进行解释,如果能碰巧解决你现在面临的问题,别忘...