C++初阶:容器(Containers)list常用接口详解

介绍完了vector类的相关内容后,接下来进入新的篇章,容器list介绍:


文章目录

  • 1.list的初步介绍
  • 2.list的定义(constructor)
  • 3.list迭代器( iterator )
  • 4.string的三种遍历
    • 4.1迭代器
    • 4.2范围for循环
  • 5. list capacity
  • 6.list element access
  • 7.list modifiers


1.list的初步介绍

请添加图片描述

  1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。
  2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。
  3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。
  4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。
  5. 与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销;list还需要一些额外的空间,以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这可能是一个重要的因素)

请添加图片描述


2.list的定义(constructor)

请添加图片描述

构造函数描述
list(size_type n, const value_type& val = value_type())构造一个包含 n 个元素的列表,每个元素初始化为 val
list()构造一个空列表。
list(const list& x)拷贝构造函数。构造一个包含 x 中每个元素副本的列表。
list(InputIterator first, InputIterator last)用区间 [first, last) 中的元素构造一个列表。
#include<iostream>
#include<list>
using namespace std;void test1()
{list<int> lt1;//空参list<int> lt2(10, 2);//放进去10个二string s("abc");list<int> lt3(s.begin(), s.end());//利用迭代器初始化
}int main()
{test1();return 0;
}

3.list迭代器( iterator )

请添加图片描述

迭代器说明
begin获取第一个数据位置的iterator/const_iterator
end获取最后一个数据的下一个位置的iterator/const_iterator
rbegin获取最后一个数据位置的reverse_iterator
rend获取第一个数据前一个位置的reverse_iterator

4.string的三种遍历

4.1迭代器

void test2()
{string s("abc");list<int> lt(s.begin(), s.end());list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";it++;}cout << endl;}int main()
{test2();return 0;
}

请添加图片描述

4.2范围for循环

void test3()
{string s("abc");list<int> lt(s.begin(), s.end());for (auto e : lt){cout << e << " ";}cout << endl;
}int main()
{test3();return 0;
}

5. list capacity

请添加图片描述

函数描述
empty检测列表是否为空。如果为空返回 true,否则返回 false。
size返回列表中元素的个数。

6.list element access

请添加图片描述

函数描述
front返回list的第一个元素的引用。
back返回list的最后一个元素的引用。

7.list modifiers

请添加图片描述

函数接口说明
push_front在list首元素前插入值为val的元素。
pop_front删除list中第一个元素。
push_back在list尾部插入值为val的元素。
pop_back删除list中最后一个元素。
insert在list position 位置中插入值为val的元素。
erase删除list position位置的元素。
swap交换两个list中的元素。
clear清空list中的有效元素。
void test4()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);//尾插三个for (auto e : lt){cout << e << " ";}cout << endl;lt.pop_back();//尾删一个for (auto e : lt){cout << e << " ";}cout << endl;lt.push_front(1);//头插一个for (auto e : lt){cout << e << " ";}cout << endl;lt.pop_front();//头删一个for (auto e : lt){cout << e << " ";}cout << endl;lt.clear();//全删for (auto e : lt){cout << e << " ";}cout << endl;
}int main()
{test4();return 0;
}

请添加图片描述


这次内容到这里啦,下一次给大家带来模拟,感谢大家支持!!!

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

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

相关文章

BatchNorm介绍:卷积神经网络中的BN

一、BN介绍 1.原理 在机器学习中让输入的数据之间相关性越少越好&#xff0c;最好输入的每个样本都是均值为0方差为1。在输入神经网络之前可以对数据进行处理让数据消除共线性&#xff0c;但是这样的话输入层的激活层看到的是一个分布良好的数据&#xff0c;但是较深的激活层…

MyBatis执行流程

MyBatis是一个流行的Java持久层框架&#xff0c;它封装了JDBC操作&#xff0c;使开发者可以通过XML或注解的方式映射SQL语句&#xff0c;并将POJO与数据库表之间进行映射。了解MyBatis的执行流程&#xff0c;可以帮助开发者更好地理解其内部工作机制&#xff0c;优化代码并解决…

企业微信自动推送机器人的应用与价值

随着科技的快速发展&#xff0c;企业微信自动推送机器人已经成为了企业数字化转型的重要工具。这种机器人可以自动推送消息、执行任务、提供服务&#xff0c;为企业带来了许多便利。本文将探讨企业微信自动推送机器人的应用和价值。 一、企业微信自动推送机器人的应用 企业微信…

无人机飞行控制系统功能,多旋翼飞行控制系统概述

飞行控制系统存在的意义 行控制系统通过高效的控制算法内核&#xff0c;能够精准地感应并计算出飞行器的飞行姿态等数据&#xff0c;再通过主控制单元实现精准定位悬停和自主平稳飞行。 在没有飞行控制系统的情况下&#xff0c;有很多的专业飞手经过长期艰苦的练习&#xff0…

「数据结构」串

串的定义和实现 串的定义 串: 即字符串&#xff0c;零个或多个字符组成的有限序列串的长度&#xff1a;串中字符的个数n空串&#xff1a;n0时的串子串&#xff1a;串中任意多个连续的字符组成的子序列主串&#xff1a;包含子串的串字符在主串中的位置&#xff1a;字符在串中的…

【Docker进阶】镜像制作-用Dockerfile制作镜像(一)

进阶一 docker镜像制作 文章目录 进阶一 docker镜像制作用dockerfile制作镜像dockerfile是什么dockerfile格式为什么需要dockerfileDockerfile指令集合FROMMAINTAINERLABELCOPYENVWORKDIR 用dockerfile制作镜像 用快照制作镜像的缺陷&#xff1a; 黑盒不可重复臃肿 docker…

嵌入式大厂面试题(1)—— CVTE

从本篇开始将会更新历年来各个公司的面试题与面经&#xff0c;题目来自于网上各个平台以及博主自己遇到的&#xff0c;如果大家有所帮助&#xff0c;帮忙点点赞和关注吧&#xff01; 岗位&#xff1a;嵌入式软件工程师。 面试时间&#xff1a;20分钟。 面试 1 、简历中写了做过…

Kafka 入门笔记

课程地址 概述 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;MQ&#xff09; 发布/订阅&#xff1a;消息的发布者不会将消息直接发送给特定的订阅者&#xff0c;而是将发布的消息分为不同的类别&#xff0c;订阅者只接受感兴趣的消息 消息队列 消息队…

HCIA-Datacom实验指导手册:4.3 实验三:网络地址转换配置实验

HCIA-Datacom实验指导手册&#xff1a;4.3 实验三&#xff1a;网络地址转换配置实验 一、实验介绍&#xff1a;二、 思考题与附加内容 一、实验介绍&#xff1a; NAT的作用&#xff1a; 1、很大程度提高网络安全性。 2、控制内外网网络联通性问题。 特点&#xff1a; 1&#…

JDK 11 vs JDK 8:探索Java的新特性和改进

随着技术的不断进步&#xff0c;Java开发工具包&#xff08;JDK&#xff09;也在不断演变&#xff0c;为开发者带来更高效、更安全的编程体验。在这篇文章中&#xff0c;我们将重点探讨JDK11相较于JDK 8所引入的一些新特性和改进&#xff0c;以便您能够更好地了解Java的最新发展…

leetcode:买卖股票最佳时机二

思路&#xff1a; 使用贪心算法&#xff1a;局部最优是将买卖过程中产生的正数进行相加&#xff0c;进而使得最后结果最大&#xff08;全局最优&#xff09;。 price [7,1,5,10,3,6,4] -6,4,5,-7,3,-2 正数相加就得到了最大 代码实现&#xff1a; 1.循环中下标从1开始 …

大数据的基础探索之大数据时代

前言&#xff1a;大数据已经是大势所趋&#xff0c;在这个网络时代能够不断地整合资源的人本身也是一种能力拥有者&#xff0c;在这个时代&#xff0c;如果一个人可以掌握数据分析工具&#xff0c;利用好云计算的能力&#xff0c;对于自己的个人而言来说都是一个极其重要的参与…

【PyTorch】张量(Tensor)的生成

PyTorch深度学习总结 第一章 Pytorch中张量(Tensor)的生成 文章目录 PyTorch深度学习总结一、什么是PyTorch&#xff1f;二、张量(Tensor)1、张量的数据类型2、张量生成和信息获取 总结 一、什么是PyTorch&#xff1f; PyTorch是一个开源的深度学习框架&#xff0c;基于Python…

20240212请问如何将B站下载的软字幕转换成为SRT格式?

20240212请问如何将B站下载的软字幕转换成为SRT格式&#xff1f; 2024/2/12 12:47 百度搜索&#xff1a;字幕 json 转 srt json srt https://blog.csdn.net/a_wh_white/article/details/120687363?share_token2640663e-f468-4737-9b55-73c808f5dcf0 https://blog.csdn.net/a_w…

上位机图像处理和嵌入式模块部署(利用python开发软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 开发windows和linux软件的时候&#xff0c;大家一般都是习惯于用c/c语言进行开发&#xff0c;但是目前来说很多的开发板都是支持python语言开发的。…

RK3588平台开发系列讲解(视频篇)RKMedia 数据流向

文章目录 一、 获取RKMedia模块通道中的数据二、RKMedia的数据源和接收者三、模块通道绑定API调用 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;RKMedia是RK提供的一种多媒体处理方案&#xff0c;可实现音视频捕获、音视频输…

服务治理中间件-Eureka

目录 简介 搭建Eureka服务 注册服务到Eureka 简介 Eureka是Spring团队开发的服务治理中间件&#xff0c;可以轻松在项目中&#xff0c;实现服务的注册与发现&#xff0c;相比于阿里巴巴的Nacos、Apache基金会的Zookeeper&#xff0c;更加契合Spring项目&#xff0c;缺点就是…

前端vue 数字 字符串 丢失精度问题

1.问题 后端返回的数据 是这样的 一个字符串类型的数据 前端要想显示这个 肯定需要使用Json.parse() 转换一下 但是 目前有一个问题 转换的确可以 showId:1206381711026823172 有一个这样的字段 转换了以后 发现 字段成了1206381711026823200 精度直接丢了 原本的数据…

MySQL监控Innodb信息

Innodb监控 Innodb由于支持事务操作&#xff0c;是mysql中使用最多的存储引擎&#xff0c;所以如何监控Innodb存储引擎以进行性能优化是在使用mysql过程中遇到最多的&#xff0c;那么如何进行监控呢&#xff1f; show engine -- 显示innodb存储引擎状态的统计和配置信息show en…

MogaNet实战:使用MogaNet实现图像分类任务(一)

文章目录 摘要安装包安装timm 数据增强Cutout和MixupEMA项目结构计算mean和std生成数据集 摘要 论文&#xff1a;https://arxiv.org/pdf/2211.03295.pdf 作者多阶博弈论交互这一全新视角探索了现代卷积神经网络的表示能力。这种交互反映了不同尺度上下文中变量间的相互作用效…