STL:list

2023-10-26

#首先包含头文件:

#include <list>

using namespace std;//需要使用该命名空间

list是一个双向链表,是不支持随机存取的。

 

#然后定义对象:

list<int>     m_list;

定义一个int型的双向list链表。

 

#输入元素:

m_list.push_back(8);

m_list.push_back(9);

m_list.push_front(1);

m_list.push_front(0);

push_back()用于向list的末尾添加元素,push_front()用于向list的开头添加元素。

上面的操作存入m_list中的结果是:{0,1,8,9}

 

#删除元素:

m_list.pop_front();

m_list.pop_back();

pop_front()用于删除list中的第一个元素,pop_back()用于删除list中的最后一个元素。

这两个函数的返回值都是void,也就是说这两个函数仅用于删除操作。

操作要求序列必须不为空。

 

#获取指向list元素的迭代器:

list<int>::iterator    m_listIterator;

这样就定义了一个该list类型的迭代器。可以将list的任意元素的迭代器直接赋值给它。

 

#访问list中的元素:

定义一个同类型的迭代器:

list<int>::iterator    m_listIterator;

该迭代器是个指针

已知m_list中有4个元素,按顺序是:{0,1,8,9}

    list的起始元素:

m_listIterator     = m_list.begin();

cout<<*m_listIterator<<endl;     //输出m_list的起始元素,即0号元素

输出结果是:0

    list的下一个元素:

m_listIterator++;

cout<<*m_listIterator<<endl;     //输出m_list的1号元素

输出结果是:1

注意iterator可以使用++以及--,但却不能使用+=-=,也不能使用iterator = iterator+1这样的形式。原因是不支持随机存取。参见下面

③      list的最后一个元素的下一个位置:

m_listIterator     = m_list.end();

注意这与back()是不同的。该位置指向的是back()的下一个位置。所以该位置是没有元素的。

④      list的最后一个元素:

cout<<m_list.back()<<endl;     //输出m_list的3号元素

输出结果是:9

注意back()函数返回的是个引用,而非iterator指针。

⑤      list的第n个元素:

m_listIterator     = m_list.begin();

for (size_ti=0;i<m_list.size();i++)

{

     if(i ==n)

     {

         break;

     }

     m_listIterator++;

}

cout<<*m_listIterator<<endl;     //输出m_list第n个元素

由于list是个双向链表,不支持随机存取,所以要直接定位到第n个元素的位置是不可能的,只能一个元素一个元素地加过去。

 

#查找list中值为k的元素:

m_listIterator= std::find(m_list.begin(),m_list.end(),k);

其中m_list.begin()m_list.end()限定了list的查找区间。

std::find只用于查找容器元素为         基本元素

std::find_if用于查找容器元素为          

注意要调用该find函数需要包含头文件:#include<algorithm>

 

#删除list中的值为k的元素:

m_list.remove(k);

remove()会将list中值为k的元素全部删除,该函数只用于基本元素。

若要删除满足某种条件的元素,则调用remove_if()

 

#清空list中的元素:

m_list.clear();

 

# list中元素的个数:

m_list.size();

 

# list是否为空:

m_list.empty();

 

# list排序:

m_list.sort();

直接这样调用即可。默认升序排序,即排序函数是运算符“<”。可以通过修改排序函数pr来自定义排序方式。

 

# list最长序列长度:

m_list.max_size();

list不是可以无限存储数据的。每个list对象有自己所能控制的最大长度。

 

#交换两个list对象:

list<int>     listT;

m_list.swap(listT);

交换后,m_list将拥有listT的所有元素,listT将拥有m_list的所有元素。

 

#合并两个list对象:

list<int>     listT;

m_list.merge(listT);

合并后,m_listlistT的所有元素会按升序排序,然后存储到m_list中。listT将被清空。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL:list 的相关文章

  • std::list::clear 是否会使 std::list::end 迭代器无效?

    检查这个代码 include stdafx h include
  • C# 和月历,选择多个日期

    我正在制作一个程序 可以帮助人们用 C 为某个部门 预订 订单 他们需要能够选择不同月份的多个日期 我更愿意拥有它 这样他们就可以单击一个日期 然后按住 Shift 键单击另一个日期以选择这两个日期之间的所有日期 并控制单击以进行单选 取消
  • .pdbs 会减慢发布应用程序的速度吗?

    如果 dll 中包含 pdb 程序调试 文件 则行号将出现在引发的任何异常的堆栈跟踪中 这会影响应用程序的性能吗 这个问题与发布与调试 即优化 无关 这是关于拥有 pdb 文件的性能影响 每次抛出异常时都会读取 pdb 文件吗 加载程序集时
  • C# Outlook 从收件人获取 CompanyName 属性

    我目前正在使用 C 编写 Outlook 2010 AddIn 我想要的是从我从 AppointmentItem 中提取的 Recipient 对象中获取 CompanyName 属性 因此 有了 AppointmentItem 的收件人
  • C++中的类要具备什么条件才能成为容器?

    我是 C 编程新手 偶然发现了这个术语containers举例如下vector deque map etc 一个企业的最低要求应该是什么class应该满足被称为container in C 我将从 范围 这个概念开始 Range 只有两个方
  • 为什么 C# 中同一类型的隐式和显式运算符不能共存? [复制]

    这个问题在这里已经有答案了 为什么同一类中两个相同类型的运算符 显式和隐式 不能共存 假设我有以下内容 public class Fahrenheit public float Degrees get set public Fahrenhe
  • 类中是否可以有虚拟类声明?

    我正在为个人项目中框架的各个组件设置一个接口 我突然想到了一些我认为可能对接口有用的东西 我的问题是这是否可能 class a public virtual class test 0 class b public a public clas
  • 名称查找、实例化点 (POI) 和基本类型

    以下代码针对 X 进行编译 但不适用于 double struct X void foo double void foo X namespace NN struct A void foo A foo double error foo not
  • 从点云检测平面集

    我有一组点云 我想测试3D房间中是否有角落 所以我想讨论一下我的方法 以及在速度方面是否有更好的方法 因为我想在手机上测试它 我将尝试使用霍夫变换来检测线 然后我将尝试查看是否有三条线相交 并且它们也形成了两个相交的平面 如果点云数据来自深
  • 在 C 语言中替换宏内的宏

    我正在尝试使代码部分可重用 我下面的评论片段没有达到我想要的效果 define NAME ABC define LOG SIZE NAME LEN 我想LOG SIZE决心ABC LEN 我尝试过使用 但没能让它发挥作用 LOG SIZE在
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • C++ 模板可以提供 N 个给定类的公共父类吗?

    我正在寻找一个 C 模板 它可以找到一组给定类的共同父级 例如 class Animal class Mammal public Animal class Fish public Animal class Cat public Mammal
  • WPF DataGrid - 在每行末尾添加按钮

    我想在数据网格的每一行的末尾添加一个按钮 我找到了以下 xaml 但它将按钮添加到开头 有人知道如何在所有数据绑定列之后添加它吗 这会将按钮添加到开头而不是末尾
  • 将日期时间显示为 MM/dd/yyyy HH:mm 格式 C#

    在数据库中 日期时间以 MM dd yyyy HH mm ss 格式存储 但是 我想以 MM dd yyyy HH mm 格式显示日期时间 我通过使用 String Format 进行了尝试 txtCampaignStartDate Tex
  • 如何调用与现有方法同名的扩展方法? [复制]

    这个问题在这里已经有答案了 我有这样的代码 public class TestA public string ColA get set public string ColB get set public string ColC get se
  • 与 Entity Framework Core 2.0 的一对零关系

    我正在使用 C 和 NET Framework 4 7 将 Entity Framework 6 1 3 Code First 库迁移到 Entity Framework Core 我一直在用 Google 搜索 Entity Framew
  • 在二进制数据文件的标头中放入什么

    我有一个模拟 可以读取我们创建的大型二进制数据文件 10 到 100 GB 出于速度原因 我们使用二进制 这些文件依赖于系统 是从我们运行的每个系统上的文本文件转换而来的 所以我不关心可移植性 当前的文件是 POD 结构的许多实例 使用 f
  • Emacs C++,打开相应的头文件

    我是 emacs 新手 我想知道 是否有在头文件 源文件和相应的源文件 头文件之间切换的快捷方式 是否有像通用 emacs 参考卡那样的参考卡 Thanks There s ff find other file 您可以使用以下方法将其绑定到
  • 如何在c中断言两个类型相等?

    在 C 中如何断言两种类型相等 在 C 中 我会使用 std is same 但搜索 StackOverflow 和其他地方似乎只能给出 C 和 C 的结果 在C中没有办法做到这一点吗 请注意 这不是询问变量是否具有某种类型 而是询问两个类

随机推荐

  • 14.学习Camera之——camera基本知识

    一 Camera模组 大家都知道 手机背面的那个小小的孔 就叫摄像头 这个小孔幽幽的泛着光泽 深邃又迷人 如同 一个含苞待放的小萝莉一样 这个小萝莉还是个傲娇娘 像零之使魔的614一样惹人怜爱 而且在小萝莉身体 里面 不对 是在小孔的里面
  • 大数据组件-Kafka的javaAPI操作,Kafka StreamingAPI开发,

    1 KafkaJavaApi操作 1 添加maven依赖
  • python写客户端发送请求失败_零基础写python爬虫之HTTP异常处理

    先来说一说HTTP的异常处理问题 当urlopen不能够处理一个response时 产生urlError 不过通常的Python APIs异常如ValueError TypeError等也会同时产生 HTTPError是urlError的子
  • iOS单例

    iOS开发中单例模式必不可少 是不是还在写单例的时候还写那一坨代码呢 这里提供一个宏 只需要简单的两句话就可以实现单例无论MRC还是ARC 使用方法 h中 import
  • @Control详解--Spring2.5

    一个简单的基于注解的 Controller 使用过低版本 Spring MVC 的读者都知道 当创建一个 Controller 时 我们需要直接或间接地实现 org springframework web servlet mvc Contr
  • LintCode统计数字:计算数字k在0到n中的出现的次数,k可能是0~9的一个值

    现在是2018 9 21 距离毕业还有不到两年的时间 情况乐观的话 我应该会在一年之内去找一份实习工作 对于找工作这件事 此刻的我还是有些惶恐 我无法确定清晰的职业方向和目标 对自己的知识储备也不自信 为了给即将面对的求职做些准备 我觉得有
  • CSDN证书记录(仅仅只是个人CSDN纪录)

    按照时间线来记录点点滴滴 1 2022年4月 安卓领域实力新星 2 2022年7月 笔耕不辍 3 2022年8月 博客专家
  • 今天百度索引量算是闹了个乌龙吗

    今天百度索引量算是闹了个乌龙吗 各大网站 不论大小 基本上都是索引量砍半 百度站长论坛更是热闹非凡 各种声音都有 百度服务器故障 百度算法大调整 网站被降权了等等 作为老站长的我发现索引量大幅下降后 立马看了百度站长平台中的其他站点 发现都
  • Xilinx FPGA 7系列 GTX/GTH Transceivers (1)

    初识Xlilix GTX 1概述 Xilinx 7系列FPGA全系所支持的GT GT资源是Xilinx系列FPGA的重要卖点 也是做高速接口的基础 GT的意思是Gigabyte Transceiver G比特收发器 不管是PCIE SATA
  • 数据的储存

    数据的存储在C语言中无疑是一个难点 但是也要充满信心征服他的信心 翻过这座山 会看到更广阔的天空 基本数据类型 整型家族 浮点数家族 自定义类型 指针类型 空类型 大小端字节序介绍和判断 整形在内存中的存储 浮点型在内存中的存储 练习 基本
  • uva 11292

    水题 include
  • 2022年秋招求职#end——华为单板硬件

    九月初就在官网创建了简历 但是当时并没有投简历 记录中却是已经投递简历了 害我以为一直都是石沉大海的状态 十月底江哥问我华子怎么样 有没有消息 我才上去官网看 然后重新投递 第一个志愿是逻辑 就是江哥的部门 第二个志愿是老本行电源 然后十月
  • git --login-i_使用Git- Part -I:基础知识

    git login i 介绍 Git是由Linux OS的创建者Linus Torvalds创建的流行的分布式版本控制系统 因此 您可能已经猜到它首先用于版本控制Linux内核代码 它广泛用于大多数开放源代码和封闭源代码软件的开发中 得益于
  • 第四课,视图的显示选项和光照部分

    主要讲了视图的两部分 一个是光照等 一个是说了显示部分 外界的宏观部分
  • css实现渐变色

    日常中最常用到的渐变色是背景和边框 一条线的渐变色可以考虑使用div 然后根据需求设置高度 两种 首先来了解一下绘制渐变色的角度与方向 第一种 背景 使用到的属性为background 接下来看三个关于背景渐变最常用到的实例 有详细注释 方
  • Azure Key Vault(2):创建Azure Key Vault

    如果想要了解Key Vault是干什么的 可以看我的上一篇博文 这里我会说一下如何来创建Key Vault并使用它来保存一个D365连接字符串 如下 AuthType ClientSecret url https contoso 8080
  • 什么是泛型?

    目录 一 什么是泛型 二 泛型方法 三 泛型接口 四 通配符 4 1 通配符 4 2 上限通配符 4 3 下限通配符 4 4 类型擦除 一 什么是泛型 泛型 就是指在类定义时不会设置类中的属性或方法参数的具体类型 而是在类使用时 创建对象
  • request,response中文乱码问题

    request response中文乱码问题 request乱码 浏览器向服务器发送的请求参数中包含中文字符 服务器获取的请求参数的值是乱码 response乱码 服务器向浏览器发送的数据包含中文字符 浏览器中显示的是乱码 产生乱码的原因
  • Android多线程之同步锁的使用

    本文主要介绍了Android多线程之同步锁的使用 分享给大家 具体如下 一 同步机制关键字synchronized 对于Java来说 最常用的同步机制就是synchronized关键字 他是一种基于语言的粗略锁 能够作用于对象 函数 cla
  • STL:list

    首先包含头文件 include