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

news2024/12/22 19:45:08

简介: 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.coloradmin.cn/o/1039037.html

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

相关文章

【pdf密码】打开PDF文件之后发现不能编辑,什么原因?

打开PDF文件的时候&#xff0c;没有提示带有密码&#xff0c;但是打开文件之后发现没有办法编辑PDF文件&#xff0c;这个是因为PDF文件设置了限制编辑&#xff0c;我们需要将限制取消才能够编辑文件。 那么&#xff0c;我们应该如何取消密码&#xff0c;编辑文件呢&#xff1f…

redhat 6.1 测试环境安装 yum

redhat 6.1 测试环境安装 yum 记录 1. 新建虚拟机 1.1 自定义建立虚拟机 自定义创建新的虚拟机 选择硬件兼容性 创建空白硬盘&#xff0c;稍后选择 iso 文件创建系统。 选择操作系统类型 为虚拟机命名 选择处理器配置 选择虚拟机内存 选择虚拟机网络类型 选择…

零基础学JavaScript(二)ECMAScript 基础

一、变量 1. 我们JavaScript代码写在 script标签里面 2. 我们定义一个变量名字为name&#xff0c;它的值是“张三” 3. 打开开发者工具的控制台&#xff0c;查看打印结果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

asp.net企业生产管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 企业生产管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 二、功能介绍 (1)用户管理&…

java使用正则提取数据

一、正则提取文本指定数据 需要对一个json结构做数据的提取,提取label和value的值&#xff0c;组成新的结构&#xff0c;西瓜:0、苹果:1、草莓:2 原始json字符串如下格式 [{"label": "西瓜","value": 0},{"label": "苹果"…

http协议与tomcat

目录 引言 抓包 fiddler的基本使用及设置 HTTP请求 请求首行请求头空行正文 请求的首行方法URL版本号 ​编辑 响应首行响应头空行正文 响应的首行版本号状态码 URL(网址) url基本格式 urlencode 常见方法 get和post区别 认识请求"报头"(header) Host Content-Len…

Kubernetes的容器批量调度引擎 Volcano

一个用于高性能工作负载场景下基于Kubernetes的容器批量调度引擎 Volcano是在Kubernetes上运行高性能工作负载的容器批量计算引擎。 它提供了Kubernetes目前缺少的一套机制&#xff0c;这些机制通常是许多高性能 工作负载所必需的&#xff0c;包括&#xff1a; - 机器学习/深度…

某金融机构在数据安全及等保合规背景下的网络安全规划项目案例

前言 **近年来网络入侵、信息泄露以及网络病毒等事件频发&#xff0c;国家层面陆续出台多部数据安全相关法律法规&#xff0c;金融行业作为国家强监管的重点行业&#xff0c;参照上层法律法规起草发布了各类相关行业标准和规范。另外&#xff0c;结合笔者所在公司基础架构和信…

国产芯片ZT1826亮相IOTE展 以物联网技术助力行业数字化转型

9月20日&#xff0c;备受物联网行业瞩目的IOTE 2023第20届国际物联网展&#xff0c;在深圳宝安国际会展中心盛大开幕&#xff01;本届展会为期三天&#xff0c;从9月20日到22日&#xff0c;以“IoT构建数字经济底座”为主题&#xff0c;汇聚了全球超600家参展企业&#xff0c;参…

计算机毕业设计 智慧养老中心管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

简单线性回归(Simple Linear Regression)

简单线性回归(Simple Linear Regression) 简单线性回归(Simple Linear Regression)简介理解数据数据处理读取数据数据预览数据探索数据统计信息数据类型查看数据的直方图通过散点图查看数据的相关关系相关系数建立模型创建训练数据和测试数据建立简单线性回归模型查看回归方…

甜型葡萄酒取决的因素有哪些?

许多葡萄酒爱好者对干葡萄酒有明显的偏好&#xff0c;其中一些人甚至不喜欢甜葡萄酒&#xff0c;但这种拒绝意味着他们永远不会知道一些世界上最好的葡萄酒&#xff0c;如果你想了解更多关于甜酒的知识&#xff0c;你来对地方了。来自云仓酒庄雷盛红酒分享&#xff0c;云仓酒庄…

【2023研电赛】商业计划书赛道—总决赛二等奖:高安全性刷掌识别技术产业化

本文为2023年第十八届中国研究生电子设计竞赛商业计划赛道二等奖分享&#xff0c;参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&#xff01;&#xff0c;分享2023研电赛作品扩大影响力&#xff0c;更有丰富电子礼品等你来领&a…

全球第4大操作系统(鸿蒙)的软件后缀.hap

system exe 2022-12-01 04:38:38 首页 > 操作系统 145|0条评论 鸿蒙OS兼容已有安卓程序&#xff1a;这事不稀奇。 其实一个系统兼容另外系统的可执行程序并非新鲜事&#xff0c;比如linux下的wine和crossover可以兼容许多win系统的.exe程序。 作为回应&#xff0c;Wind…

如何避免过度优化?(掌握这些技巧,让你更优雅地优化你的网站)

在网络营销中&#xff0c;优化对于网站的重要性不言而喻。然而&#xff0c;有时候优化会让人们走上一条错误的道路——过度优化。过度优化会导致网站被惩罚&#xff0c;甚至被从搜索结果中彻底剔除。本文将详细介绍如何避免过度优化&#xff0c;从而保证网站的可持续发展。蘑菇…

VS Code 中使用Git实践,学会了效率翻倍!

本文来一起学习如何在 VS Code 中进行常见的 Git 可视化操作&#xff01; 前置工作 在介绍如何在 VS Code 中使用 Git 之前&#xff0c;先来介绍一个强悍的 VS Code 插件&#xff1a;Git Extension Pack&#xff0c;它旨在提供一组常用的 Git 工具和功能&#xff0c;以便更方…

四,立方体贴图

Pbr的间接光用到立方体贴图&#xff0c;所以&#xff0c;先用shader进行立方体贴图。 立方体贴图很简单&#xff0c;就是用方向向量&#xff08;不一定是单位向量&#xff09;采样cubeMap的颜色。 也就是在片元着色器中传递。 "float x outPos.r;\n" "float y…

前端制作

使用float: left将格子左浮动。 设置格子背景颜色&#xff0c;字体颜色&#xff0c;鼠标放上去后的字体颜色和背景颜色 <style>.title {width: 100%;overflow: hidden;}.title-topic a { /*以下元素应用于topic*/float: left; /*左浮动&#xff0c;让12个格子在…

导数差分近似公式总结

导数差分近似公式总结 生活一路顺风 睿雯 一阶近似 向前差分 -111-21-13-311-46-41 向后差分 -111-21-13-311-46-41 二阶近似 向前差分 -3412-54-1-518-2414-33-1426-2411-2 向后差分 1-43-14-523-1424-185-211-2426-143 中心差分 -1011-21-120-211-46-41 四阶近似 中…

RabbitMQ工作模式——Topics模式

1.Topics通配符模式 *是一个单词&#xff0c;#是0到多个单词 Topics模式生产者代码 public class Producer_Topic {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//…