当前位置: 首页 > news >正文

C++ STL list容器使用教程

文章目录

  • 引用头文件
  • 初始化赋值
  • 遍历 list 容器
  • 迭代器
  • list 常用方法
    • 删除元素
    • 插入元素
  • 合并列表

list 翻译为列表,列表容器被实现为双向链表,因此它提供了对其数据的双向顺序访问

List 不提供快速随机访问,它只支持双向顺序访问List 允许在恒定时间内在序列中的任何位置进行插入和删除操作。

零大小的列表也是有效的。 在这种情况下 list.begin()list.end() 指向相同的位置。 但是调用 front()back() 的行为是未定义的。

引用头文件

#include <list>

初始化赋值

list<int> lis; // 初始化空列表
list<int> lis(5); // 初始化列表 5 个元素
list<int> lis(3,2); // 列表 初始化 3个2 : 2 2 2
list<int> lis( {3,2, 4} ); // 初始化 3 2 4
list<int> lis = {1, 2, 3}; // 初始化 1 2 3
list<int> lis1(lis); // 初始化为 lis 中元素
list<int> lis1 = {lis.begin(), lis.end()}; // 初始化为 lis 中元素

遍历 list 容器

不支持索引遍历

  1. for rang遍历
list<int> lis({3,2, 4});
for(int x : lis) {cout<< x<<endl;
}
  1. 迭代器遍历
list<int> lis({3,2, 4});
for(auto it = lis.begin(); it != lis.end(); it++) {cout<<*it <<endl;
}

迭代器

list 容器,迭代器只支持 ++ -- 操作

list 常用方法

方法说明
back() 返回对列表最后一个元素
begin()返回一个随机访问迭代器,它指向列表的第一个元素
end()返回一个随机访问迭代器,它指向列表的最后一个元素
empty()测试列表是否为空
erase(value)从列表中删除单个元素
front()返回列表第一个元素
insert(value)通过在容器中插入新元素来扩展列表
merge(duq1)两个排序列表合并为一个
size()返回双端队列中存在的元素总数
pop_back()从列表中删除最后一个元素
pop_front()从列表中删除第一个元素
push_back()在列表末尾插入新元素
push_front()在列表首部插入新元素
sort()自带对列表的元素进行排序的功能
unique()从列表中删除所有连续的重复元素

删除元素

  1. l.erase(l.begin()) 删除 l 的 首部元素
  2. l.erase(l.begin(), l.end()) 删除 l 首部到末尾的元素
list<int> l = {1, 2, 3, 4, 5};
l.erase(l.begin(), l.end());

插入元素

  1. lis.insert(lis.end(), value) 在 lis 末尾插入 value
  2. lis.insert(lis.end(), num, value) 在 lis 末尾插入 num 个 value
  3. l1.insert(l1.begin(), l2.begin(), l2.end()); 在 l1 的首部 插入 l2 全部元素
list<int> l1 = {3, 4, 5};
list<int> l2 = {1, 2};l1.insert(l1.begin(), l2.begin(), l2.end());

合并列表

  1. l2.merge(l1) 将l1合并到l2,并按照升序排列
  2. l2.merge(l1, cmp_fun) 将l1合并到l2,根据 cmp_fun 排列

bool cmp_fun(int a, int b) {return a > b;
}list<int> l1 = {31, 11, 5, 1};
list<int> l2 = {30, 20, 10};l2.merge(l1, cmp_fun);
http://www.lryc.cn/news/149736.html

相关文章:

  • go web之一:hello world快速上手+handle(http.Handle和http.HandleFunc的区别与联系)
  • 【Postman】postman生成测试报告完整步骤(包含命令与newman安装教程链接)
  • 一、C#—概述环境安装(1)
  • C# 实现ComboBox下拉框控件
  • leetcode做题笔记119. 杨辉三角 II
  • Dolphin for Mac(Wii游戏模拟器)配置指南
  • Java,Linux,Mysql小白入门
  • 代码随想录算法训练营第二十四天|理论基础 77. 组合
  • macos安装zsh
  • 【Unity】预制体材质变(Clone)克隆体问题
  • python“魂牵”京东商品历史价格数据接口(含代码示例)
  • 密码算法、密钥体系---安全行业基础篇1
  • Java工具类记录
  • DVWA靶场搭建
  • Uniapp笔记(二)uniapp语法1
  • 【1day】PHPOK cms SQL注入学习
  • 线程同步与互斥
  • 电子词典dictionary
  • 【python爬虫】10.指挥浏览器自动工作(selenium)
  • QT文件对话框,将标签内容保存至指定文件
  • C#,《小白学程序》第十一课:阶乘(Factorial)的计算方法与代码
  • MySQL 数据库常用命令大全(完整版)
  • 【数学】【书籍阅读笔记】【概率论】应用随机过程概率论模型导论 by Sheldon M.Ross 第一章 概率论引总结与习题题解 【更新中】
  • posexplode函数实战总结
  • QTday3(对话框、发布软件、事件处理核心机制)
  • el-date-picker限制选择的时间范围
  • Scala中的Actor模型
  • Java使用pdfbox将pdf转图片
  • 大规模场景下对Istio的性能优化
  • 数字化新零售平台系统提供商,门店商品信息智慧管理-亿发进销存