C++之list成员函数应用总结(二百三十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:理解C++之list成员函数应用。

2.list成员函数介绍

C++中的std::list是一个双向链表的容器,它提供了许多成员函数用于对链表进行操作。以下是一些常用的std::list成员函数的列表:

  • 构造函数:

    • list():默认构造函数。
    • list(const list& other):拷贝构造函数。
    • list(size_type count, const T& value):构造函数,创建包含count个值为value的元素的链表。
  • 迭代器(Iterator)相关函数:

    • begin():返回指向链表第一个元素的迭代器。
    • end():返回指向链表尾后位置的迭代器。
    • rbegin():返回指向链表最后一个元素的逆向迭代器。
    • rend():返回指向链表首元素前位置的逆向迭代器。
  • 容量相关函数:

    • empty():检查链表是否为空。
    • size():返回链表中元素的数量。
    • max_size():返回链表所允许的最大元素数量。
  • 元素访问与修改相关函数:

    • front():返回链表的第一个元素的引用。
    • back():返回链表的最后一个元素的引用。
    • push_back(const T& value):将元素加入链表尾部。
    • push_front(const T& value):将元素加入链表头部。
    • pop_back():删除链表尾部的元素。
    • pop_front():删除链表头部的元素。
  • 修改容器相关函数:

    • clear():清空链表中的所有元素。
    • erase(iterator position):删除指定位置处的元素。
    • erase(iterator first, iterator last):删除[first, last)范围内的元素。
    • insert(iterator position, const T& value):在指定位置之前插入元素。

3.应用实例

1. begin()end() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 begin() 函数获取列表的第一个元素的迭代器std::list<int>::iterator iterStart = myList.begin();// 使用 end() 函数获取列表的最后一个元素的迭代器std::list<int>::iterator iterEnd = myList.end();// 遍历列表for (std::list<int>::iterator iter = iterStart; iter != iterEnd; ++iter) {std::cout << *iter << " ";}return 0;
}

2. rbegin()rend() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 rbegin() 函数获取列表的最后一个元素的反向迭代器std::list<int>::reverse_iterator iterStart = myList.rbegin();// 使用 rend() 函数获取列表的第一个元素的反向迭代器std::list<int>::reverse_iterator iterEnd = myList.rend();// 遍历列表for (std::list<int>::reverse_iterator iter = iterStart; iter != iterEnd; ++iter) {std::cout << *iter << " ";}return 0;
}

3. empty() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 empty() 函数判断列表是否为空if (myList.empty()) {std::cout << "List is empty" << std::endl;} else {std::cout << "List is not empty" << std::endl;}return 0;
}

4. size() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 size() 函数获取列表的元素个数std::cout << "Size of list: " << myList.size() << std::endl;return 0;
}

5. max_size() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 max_size() 函数获取列表的最大容量std::cout << "Max size of list: " << myList.max_size() << std::endl;return 0;
}

6. front() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 front() 函数获取列表的第一个元素int firstElement = myList.front();std::cout << "First element of list: " << firstElement << std::endl;return 0;
}

7. back() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 back() 函数获取列表的最后一个元素int lastElement = myList.back();std::cout << "Last element of list: " << lastElement << std::endl;return 0;
}

8. push_back() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 push_back() 函数在列表末尾插入元素myList.push_back(6);// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

9. push_front() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 push_front() 函数在列表开头插入元素myList.push_front(0);// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

10. pop_back() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 pop_back() 函数删除列表末尾的元素myList.pop_back();// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

11. pop_front() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 pop_front() 函数删除列表开头的元素myList.pop_front();// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

12. clear() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 clear() 函数清空列表myList.clear();// 输出列表中的元素(为空)for (int num : myList) {std::cout << num << " ";}return 0;
}

13. erase() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 erase() 函数删除列表中的指定元素std::list<int>::iterator iter = myList.erase(myList.begin()); // 删除第一个元素// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

14. insert() 函数:

#include <iostream>
#include <list>int main() {std::list<int> myList = {1, 2, 3, 4, 5};// 使用 insert() 函数在指定位置插入元素std::list<int>::iterator iter = myList.insert(myList.begin(), 0); // 在第一个元素前插入0// 输出列表中的元素for (int num : myList) {std::cout << num << " ";}return 0;
}

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

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

相关文章

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理(20230928)

数据库管理-第108期 因Exadata存储节点操作系统空间异常的紧急处理&#xff08;20230928&#xff09; 众所周知&#xff0c;明天放假了&#xff0c;本着对客户数据库软硬件负责任的态度&#xff0c;进行了一次深入彻底的软硬件巡检&#xff08;就是检查包括计算节点、存储节点…

PyTorch - Dataset 迭代数据接口 __getitem__ 异常处理

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/133378772 在模型训练的过程中&#xff0c;加载数据部分&#xff0c;极其容易出现异常&#xff0c;以及不可控的因素&#xff0c;需要通过异常捕获…

【网络协议】TCP报文格式

1.源端口和目的端口 源端口字段占16比特&#xff0c;用来写入源端口号。源端口号用来标识发送该TCP报文段的应用进程。 目的端口字段占16比特&#xff0c;用来写入目的端口号。目的端口号用来标识接收该TCP报文段的应用进程。 2.序号 当序号增加到最后一个时&#xff0c;下…

26551-2011 畜牧机械 粗饲料切碎机

声明 本文是学习GB-T 26551-2011 畜牧机械 粗饲料切碎机. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了粗饲料切碎机的产品型号、技术要求、试验方法、检验规则、标志、包装、运输与贮存。 本标准适用于加工农作物秸秆等粗饲料…

Mysql生产随笔

目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法&#xff0c;不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…

【AIPOD案例操作教程】斜流风扇轮毂优化

AIPOD是由天洑软件自主研发的一款通用的智能优化设计软件&#xff0c;致力于解决能耗更少、成本更低、重量更轻、散热更好、速度更快等目标的工程设计寻优问题。针对工业设计领域的自动化程度低、数值模拟计算成本高等痛点&#xff0c;基于人工智能技术、自研先进的智能代理学习…

linux部署页面内容

/bin&#xff1a;该目录包含了常用的二进制可执行文件&#xff0c;如ls、cp、mv、rm等等。 /boot&#xff1a;该目录包含了启动Linux系统所需的文件&#xff0c;如内核文件和引导加载程序。 /dev&#xff1a;该目录包含了所有设备文件&#xff0c;如硬盘、光驱、鼠标、键盘等等…

新手十分钟也能完成的Unity小游戏打砖块

由Siki学院打砖块游戏启发完成一个非常非常简单&#xff0c;纯新手也能十分钟做出来的小游戏——打砖块。 一.搭建场景 首先我们先在一个空白的3D项目中创建一个Plane平面&#xff0c;将其放置于世界中央位置&#xff0c;长宽设置为2&#xff0c;并为其添加一个材质Material&am…

二十,镜面IBL--打印BRDF积分贴图

比起以往&#xff0c;这节应该是最轻松的了&#xff0c; 运行结果如下 代码如下&#xff1a; #include <osg/TextureCubeMap> #include <osg/TexGen> #include <osg/TexEnvCombine> #include <osgUtil/ReflectionMapGenerator> #include <osgDB/Re…

挂件板死机刷固件

用ESP32-DevKitC_V4刷固件的工具flash_download_tool_3.9.5.exe 挂件板子端口接线依次为V&#xff08;接3V3&#xff09;、R&#xff08;接TXD&#xff09;、T&#xff08;接RXD&#xff09;、G&#xff08;接GND&#xff09;、L&#xff08;悬空&#xff09; 1.选择ESP8266&…

关于TUM数据集

2、验证回环检测算法&#xff0c;需要有人工标记回环的数据集。然而人工标记回环是很不方便的&#xff0c;我们会考虑根据标准轨迹计算回环。即&#xff0c;如果轨迹中有两个帧的位姿非常相近&#xff0c;就认为它们是回环。请根据TUM数据集给出的标准轨迹&#xff0c;计算出一…

MySQL学习笔记19

MySQL日志文件&#xff1a;MySQL中我们需要了解哪些日志&#xff1f; 常见日志文件&#xff1a; 我们需要掌握错误日志、二进制日志、中继日志、慢查询日志。 错误日志&#xff1a; 作用&#xff1a;存放数据库的启动、停止和运行时的错误信息。 场景&#xff1a;用于数据库的…

BACnet/IP协议采集网关支持modbus RTU采集

楼宇自动化在现代建筑中扮演着重要的角色&#xff0c;它可以集成和控制各种设备和系统&#xff0c;提高建筑的能效和舒适性。然而&#xff0c;不同的设备和系统通常使用不同的通信协议&#xff0c;这给楼宇自动化的实施带来了一定的挑战。为了解决这个问题&#xff0c;BACnet和…

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器&#xff08;Connection Manager&#xff09;安全性和权限模块&#xff08;Security and Privilege Module&#xff09; 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

vuepress+gitee免费搭建个人在线博客(无保留版)

文章目录 最终效果&#xff0c;一睹为快&#xff01;一、工具选型二、什么是VuePress三、准备工作3.1 node 安装3.2 Git安装3.3 Gitee账号注册 四、搭建步骤4.1 初始化VuePress4.2 安装VuePress4.3 初始化目录4.4 编写文章 五、部署到Gitee5.1 创建仓库5.2 个人空间地址设置4.3…

1.vue3脚手架在vscode下面建立

一、下载安装node.js Node.js (nodejs.org) 二、安装vue3脚手架 #添加项目脚手架 npm install -g vue/cli 三、建立项目 #项目建立 vue create {appname} 测试项目安装成功&#xff1a;运行npm run serve命令 npm run serve 证明脚手架、项目环境已配置好 四、添加配件&#x…

高光时刻丨极智嘉斩获2023中国物流与采购联合会科学技术一等奖

不久前&#xff0c;中国物流与采购联合会宣布了2022年度科学技术奖获奖名单&#xff0c;其中包括了一项令人瞩目的成就。这项成就源自于极智嘉与国药物流、南京医药、九州通医药以及多所高校的合作&#xff0c;他们共同努力&#xff0c;成功研究并应用了一项关键技术&#xff0…

26531-2011 地理标志产品 永春老醋

声明 本文是学习GB-T 26531-2011 地理标志产品 永春老醋. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了永春老醋地理标志产品的术语和定义、保护范围、产品分级、要求、试验方法、检验规 则和标签、标志、包装、运输、贮存的要…

【3】贪心算法-最优装载问题-加勒比海盗

算法背景 在北美洲东南部&#xff0c;有一片神秘的海域&#xff0c;那里碧海蓝天、阳光 明媚&#xff0c;这正是传说中海盗最活跃的加勒比海&#xff08;Caribbean Sea&#xff09;。 有一天&#xff0c;海盗们截获了一艘装满各种各样古董的货船&#xff0c;每一 件古董都价值连…

【数据仓库设计基础(二)】维度数据模型

文章目录 一. 概述二. 维度数据模型建模过程三. 维度规范化四. 维度数据模型的特点五. 维度数据模型1. 星型模式1.1&#xff0e;事实表1.2&#xff0e;维度表1.3&#xff0e;优点1.4&#xff0e;缺点1.5&#xff0e;示例 2. 雪花模式2.1&#xff0e;数据规范化与存储2.2&#x…