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

C++之list的使用

在C++中,std::list 是一个双向链表,它允许在列表的任何位置高效地插入和删除元素。以下是一些基本的使用方式:

包含头文件

要使用 std::list,首先需要包含头文件 <iostream>/list>

#include <iostream>
#include <list>

创建 list

// 创建一个空的 list
std::list<int> lst;// 使用初始化列表创建 list
std::list<int> lst = {1, 2, 3, 4, 5};

添加元素

// 在 list 末尾添加一个元素
lst.push_back(6);// 在 list 开头添加一个元素
lst.push_front(0);// 在特定位置添加一个元素
auto it = std::next(lst.begin(), 2); // 定位到第三个元素的位置
lst.insert(it, 7);

删除元素

// 删除特定位置的元素
it = std::next(lst.begin(), 2); // 定位到第三个元素的位置
lst.erase(it);// 删除特定值的所有元素
lst.remove(7);// 删除从 pos 到 pos + n 的元素
auto end = std::next(it, 3); // 从第三个元素开始,删除三个元素
lst.erase(it, end);

访问元素

std::list 不支持随机访问,因此不能使用下标访问元素。但可以使用迭代器访问元素。

// 使用迭代器访问元素
for (auto it = lst.begin(); it != lst.end(); ++it) {std::cout << *it << " ";
}

修改元素

// 使用迭代器修改元素
for (auto it = lst.begin(); it != lst.end(); ++it) {if (*it == 2) {*it = 20; // 修改值为 20break;}
}

遍历 list

// 使用范围基 for 循环
for (int value : lst) {std::cout << value << " ";
}// 使用传统 for 循环
for (auto it = lst.begin(); it != lst.end(); ++it) {std::cout << *it << " ";
}

获取 list 信息

// 获取 list 的大小
size_t size = lst.size();// 检查 list 是否为空
bool empty = lst.empty();

清空 list

lst.clear();

交换两个 list 的内容

std::list<int> lst2 = {7, 8, 9};
lst.swap(lst2);

合并两个 list

std::list<int> lst2 = {7, 8, 9};
lst.merge(lst2); // 合并两个有序 list,假设它们已经排序

排序 list

lst.sort(); // 排序 list,使用 operator< 进行比较

反转 list

lst.reverse();

std::list 提供了许多其他功能和操作,这些只是最基本的一些。正确使用 std::list 可以极大地提高程序的灵活性和效率,尤其是在需要频繁插入和删除操作的场景中。

http://www.lryc.cn/news/478077.html

相关文章:

  • nginx配置代理地址
  • 国际版JAVA同城打车源码同城服务线下结账系统源码适配PAD支持Android+IOS+H5
  • AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
  • Java--正则表达式入门指南
  • 阿里云服务器 篇十(加更二):自动定时备份CSDN博客内容:更新文件最后修改时间,以在个人博客正确展示最近更新
  • Python编程探索:从基础语法到循环结构实践
  • 今天要重新认识下注解@RequestBody
  • 北斗有源终端|智能5G单北斗终端|单兵|单北斗|手持机
  • 【题解】—— LeetCode一周小结44
  • faiss 用于检索10亿向量(维度768)的方法
  • sql专题 之 常用命令
  • Kubernetes Extended Resource 扩展资源使用简介
  • 基于STM32的天气时钟项目教学
  • 神经网络进行波士顿房价预测
  • C++builder中的人工智能(7)如何在C++中开发特别的AI激活函数?
  • 更改lvgl图片的分辨率(减少像素)达到减小内存占用的目的
  • python的socket库的基本使用总目录
  • golang学习3
  • Python解力扣算法题(六)(详解+注释)
  • 【C++】继承和多态常见的面试问题
  • 入门网络安全工程师要学习哪些内容(详细教程)
  • 【游戏引擎之路】登神长阶(十二)——DirectX11教程:If you‘re going through hell, keep going!
  • Python列表(一图秒了)
  • 雷池社区版 7.1.0 LTS 发布了
  • 推荐一款功能强大的数据库开发管理工具:SQLite Expert Pro
  • 动态规划 之 路径问题 算法专题
  • 从office套件接入GPT4谈自动化测试的前景
  • CentOS操作系统安装过程简介
  • 基于Multisim光控夜灯LED电路(含仿真和报告)
  • 导师双选系统开发:Spring Boot技术详解