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

C++ list基础概念、list初始化、list赋值操作、list大小操作、list数据插入

list基础概念:list中的每一部分是一个Node,由三部分组成:val、next、prev(指向上一个节点的指针)

list初始化的代码,见下

#include<iostream>
#include<list>using namespace std;void printList(const list<int>& l) {for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {cout << *it << " ";}cout << endl;
}int main() {// 1 默认构造函数list<int> l1;cout << "l1: ";printList(l1);// 2 初始化列表list<int> l2_1 = { 7,6,5,4,3 };cout << "l2_1: ";printList(l2_1);list<int> l2_2({ 7,5,4,3,2 });cout << "l2_2: ";printList(l2_2);// 3 迭代器list<int> l3(l2_2.begin(), l2_2.end());cout << "l3: ";printList(l3);// 4 全0初始化list<int> l4(8);cout << "l4: ";printList(l4);// 5 初始化a个blist<int> l5(5, 8);cout << "l5: ";printList(l5);// 6 拷贝构造函数list<int> l6(l2_2);cout << "l6: ";printList(l6);return 0;
}

list赋值操作,代码见下

#include<iostream>
#include<list>using namespace std;void printList(const list<int>& l) {for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {cout << *it << " ";}cout << endl;
}int main() {list<int> l1 = { 5, 6, 7, 3, 1 };list<int> l2;// 1 = l2 = l1;printList(l2);// 2 assign(迭代器)list<int> l3;l3.assign(l1.begin(), l1.end());printList(l3);// 3 assign(初始化列表)list<int> l4;l4.assign({ 5, 9, 1, 2, 4 });printList(l4);// 4 assign(a, b)list<int> l5;l5.assign(5, 4);printList(l5);return 0;
}

list大小操作,代码见下
 

#include<iostream>
#include<list>using namespace std;void printList(const list<int>& l) {for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {cout << *it << " ";}cout << endl;
}
/*
empty
size
resize
*/
int main() {list<int> l1;cout << "l1.empty() = " << l1.empty() << endl;cout << "l1.size() = " << l1.size() << endl;l1.assign({ 4, 3, 6, 2, 1 });printList(l1);l1.resize(18);cout << "l1.empty() = " << l1.empty() << endl;cout << "l1.size() = " << l1.size() << endl;printList(l1);l1.resize(20, 6);cout << "l1.empty() = " << l1.empty() << endl;cout << "l1.size() = " << l1.size() << endl;printList(l1);l1.resize(1000);l1.resize(7);cout << "l1.empty() = " << l1.empty() << endl;cout << "l1.size() = " << l1.size() << endl;printList(l1);return 0;
}

结果见下,供理解

list数据插入,代码见下:

#include<iostream>
#include<list>using namespace std;void printList(const list<int>& l) {for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) {cout << *it << " ";}cout << endl;
}
/*
push_front
push_back
insert
*/
int main() {list<int> l;//1 push_frontl.push_front(-3);l.push_front(-2);l.push_front(-1);//2 push_backl.push_back(3);l.push_back(2);l.push_back(1);//3 insert(迭代器, 值)list<int>::iterator it = l.begin();it++;l.insert(it, 0);printList(l);//4 insert(迭代器, 数量, 值)it = l.end();--it;l.insert(it, 5, 8);printList(l);//5 insert(迭代器, 迭代器的开始位置, 迭代器的结束位置)it = l.begin();it++;l.insert(it, l.begin(), l.end());printList(l);return 0;
}

运行结果见下,便于理解

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

相关文章:

  • 39. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(函数写法)
  • Go语言defer关键字:延迟执行的精妙设计
  • 提升WSL中Ubuntu编译速度的完整指南
  • 【Linux 学习计划】-- 命令行参数 | 环境变量
  • 服务器Docker容器创建与VScode远程连接SSH使用
  • 体现物联网环境下安全防护的紧迫性 :物联网环境下的个人信息安全:隐忧与防护之道
  • LiveQing 视频点播流媒体 RTMP 推流服务功能:搭建 RTMP 视频流媒体服务详细指南
  • LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 下
  • 【正点原子STM32】RS485串行通信标准(串口基础协议 和 MODBUS协议、总线连接、通信电路、通信波形图、RS485相关HAL库驱动、RS485配置步骤、)
  • 从SPDY到HTTP/2:网络协议的革新与未来
  • 在力扣刷题中触摸算法的温度
  • 外部访问可视化监控 Grafana (Windows版本)
  • 通用的防御框架,用于抵御(多模态)大型语言模型的越狱攻击
  • 聊聊JVM怎么调优?(实战总结)
  • 新能源汽车电控系统的精准守护者PKDV5355高压差分探头
  • C# 导出word 插入公式问题
  • Mac安装配置InfluxDB,InfluxDB快速入门,Java集成InfluxDB
  • 手撕Java+硅基流动实现MCP服务器教程
  • EasyRTC嵌入式音视频通信SDK助力1v1实时音视频通话全场景应用
  • Prometheus学习之pushgateway和altermanager组件
  • 01 redis 的环境搭建
  • 《操作系统真相还原》——加载器
  • 电网即插即用介绍
  • HJ25 数据分类处理【牛客网】
  • spring-boot redis lua脚本实现滑动窗口限流
  • USB MSC
  • css实现文字渐变
  • FART 自动化脱壳框架一些 bug 修复记录
  • 基于Flask实现豆瓣Top250电影可视化
  • More SQL(Focus Subqueries、Join)