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

C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)

一、创建与初始化

  • 引入 <list> 并使用 std 命名空间
#include <list>using namespace std;
  1. 创建一个空 list
list<int> my_list;
  1. 创建一个包含 5 个元素,每个元素初始化为 0 的 list
list<int> my_list(5);
  1. 创建一个包含 5 个元素,每个元素初始化为 100 的 list
list<int> my_list(5, 100);
  1. 初始化 list
list<int> my_list = { 1, 2, 3, 4, 5 };

二、元素访问

  • 首尾元素访问
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };int result1 = my_list.front();cout << "第一个元素:" << result1 << endl;int result2 = my_list.back();cout << "最后一个元素:" << result2 << endl;return 0;
}
# 输出结果第一个元素:10
最后一个元素:30

三、容量判断

  1. 获取 list 的大小
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };cout << "大小:" << my_list.size() << endl;return 0;
}
# 输出结果大小:3
  1. 获取 list 的是否为空
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };cout << "是否为空:" << (my_list.empty() ? "是" : "否") << endl;return 0;
}
# 输出结果

四、元素遍历

  1. 正向遍历
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };for (auto it = my_list.begin(); it != my_list.end(); ++it) {cout << *it << endl;}return 0;
}
# 输出结果10
20
30
  1. 反向遍历
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };for (auto rit = my_list.rbegin(); rit != my_list.rend(); ++rit) {cout << *rit << endl;}return 0;
}
# 输出结果30
20
10
  1. 范围 for 循环
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 10, 20, 30 };for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果10
20
30

五、添加元素

  1. 在末尾添加元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.push_back(4);for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
1
2
3
4
  1. 在开头添加元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.push_front(4);for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
4
1
2
3
  1. 在指定位置插入元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;auto it = my_list.begin();advance(it, 1); // 移动到第 2 个位置my_list.insert(it, 5); // 在第 2 个位置插入元素for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
1
5
2
3

六、删除元素

  1. 删除末尾元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.pop_back();for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
1
2
  1. 删除开头元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.pop_front();for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
2
3
  1. 删除指定位置元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;auto it = my_list.begin();advance(it, 1); // 移动到第 2 个位置my_list.erase(it); // 删除第 2 个位置的元素for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
1
3
  1. 删除(所有等于 5 的元素)元素
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3, 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.remove(3);for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
1
2
3
-----
1
2
1
2
  1. 清空 list
#include <iostream>
#include <list>using namespace std;int main() {list<int> my_list = { 1, 2, 3 };for (int val : my_list) {cout << val << endl;}cout << "-----" << endl;my_list.clear();for (int val : my_list) {cout << val << endl;}return 0;
}
# 输出结果1
2
3
-----
http://www.xdnf.cn/news/252379.html

相关文章:

  • 父子组件双向绑定
  • ElasticSearch深入解析(八):索引设置、索引别名、索引模板
  • Windows配置grpc
  • 红米Note9 4G版拆开后盖操作细节
  • 51c嵌入式~电路~合集4
  • Ubuntu搭建Conda+Python开发环境
  • 【AI面试准备】Azure DevOps沙箱实验全流程详解
  • 【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考
  • 处方流转平台权限控制模块设计(基于RBAC模型)
  • Midjourney 绘画 + AI 配音:组合玩法打造爆款短视频!
  • Notion 系列(一):页面与数据库的结构化实践
  • [Android] 网易爆米花TV 2.0.0.0429(原网易Filmly,支持多网盘的TV版、电脑版带海报墙播放器)
  • 【Java IO流】IO流详解
  • 【Linux】PetaLinux开发
  • 一个读写excel的简单程序(golang)
  • 云原生后端架构的优势与最佳实践
  • Unity 与 Lua 交互详解
  • docker 官方:在 alpine 上安装 python 的方法
  • Sphinx 文档图片点击放大
  • 内部类(3):匿名内部类
  • 藏文情感分析器入门学习实践
  • Electron学习+打包
  • 【Java函数式编程-58.2】深入理解Java中的Function函数式接口
  • iO(不可区分混淆)是Web3隐私的圣杯?
  • xshell 左边的会话管理器不见怎么办?
  • d202552-sql
  • 深入解析MapReduce:大数据处理的经典范式
  • 基于建造者模式的信号量与理解建造者模式
  • Linux架构篇、第一章_03安装部署nginx
  • 第二十周:项目开发中遇到的相关问题(一)