C++ stl中的list的相关函数用法
文章目录
- list的介绍
- list的使用
- 定义方式
- 插入和删除
- 迭代器的使用
- 获取元素
- 容器中元素个数和容量的控制
- 其它操作函数
list的使用,首先要包含头文件
#include <list>
list的介绍
1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器,并且该容器能够前后双向迭代。
2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过前驱指针指向其前一个元素和后继指针指向后一个元素。
3.list与forward_list非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。
4.与其它容器相比,list通常在某个位置进行插入、删除元素的执行效率更高。
5.list和forward_list最大的缺陷是不支持在任意位置的随机访问(即不能像vector一样,通过下标+[ ]进行元素访问),其次,list还需要一些额外的空间,以保存每个结点之间的关联信息(对于存储的类型较小元素来说这可能是一个重要的因素)。
list的使用
定义方式
方式一:
构造一个某类型的空容器
list<int> lt; //构造int类型的空容器
方式二:
构造一个含有n个val的某类型容器
list<int> lt2(5,1); //构造含有5个1的int类型容器
方式三:
对某类型的list容器进行拷贝构造
list<int> lt2(lt1); //对int类型的lt1容器进行拷贝构造
方式四:
对其它容器的一段内容进行拷贝构造
string s("hello world");
list<char> lt1(s.begin(),s.end()); //对string对象某段区间的拷贝构造
方式五:
对数组的某段区间进行拷贝构造
int arr[] = { 1, 2, 3, 4, 5 };
int len = sizeof(arr) / sizeof(arr[0]);
list<int> lt1(arr, arr + len); //对数组的某段区间进行拷贝构造
插入和删除
1.push_front和pop_front
push_front:能够进行链表的头部位置数据插入
pop_front:能够进行链表的头部位置数据删除
例子:
int main()
{list<int> lt;lt.push_front(1);lt.push_front(2);lt.push_front(3);for (auto e : lt){cout << e << " ";}cout << endl; //3 2 1lt.pop_front();for (auto e : lt){cout << e << " ";}cout << endl; //2 1return 0;
}
2.push_back和pop_back
push_back:能够进行链表的尾部位置数据插入
pop_back:能够进行链表的尾部位置数据删除
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //1 2 3lt.pop_back();for (auto e : lt){cout << e << " ";}cout << endl;//1 2return 0;
}
3.insert
insert支持三种插入方式
1、在指定迭代器位置插入一个数。
2、在指定迭代器位置插入n个值为val的数。
3、在指定迭代器位置插入一段迭代器区间(注意左闭右开)。
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);list<int>::iterator pos = find(lt.begin(), lt.end(), 2);// 第一种插入方式lt.insert(pos, 4); //在2的位置插入4for (auto e : lt){cout << e << " ";}cout << endl; //1 4 2 3pos = find(lt.begin(), lt.end(), 4);// 第二种插入方式lt.insert(pos, 3, 5); //在pos(4)的位置插入3个3for (auto e : lt){cout << e << " ";}cout << endl; //1 5 5 5 4 2 3vector<int> v(3, 8);pos = find(lt.begin(), lt.end(), 2);// 第三种插入方式lt.insert(pos, v.begin(), v.end()); //在2的位置插入3个8for (auto e : lt){cout << e << " ";}cout << endl; //1 5 5 5 4 8 8 8 2 3return 0;
}
注意: find函数不是list中的成员函数,是头文件< algorithm >
中的一个函数,该函数在指定迭代器区间寻找指定元素的位置,并返回该位置的迭代器
4.erase
erase支持两种删除方式
删除指定迭代器位置的元素。
删除指定迭代器区间(注意左闭右开)的所有元素。
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);list<int>::iterator pos = find(lt.begin(), lt.end(), 3);// 第一种删除方式lt.erase(pos); //删除3for (auto e : lt){cout << e << " ";}cout << endl; //1 2 4 5pos = find(lt.begin(), lt.end(), 2);// 第二种删除方式lt.erase(pos, lt.end()); //删除2及其之后的元素for (auto e : lt){cout << e << " ";}cout << endl; //1return 0;
}
迭代器的使用
1.begin和end
begin:能够得到容器中第一个元素的正向迭代器
end:能够得到容器中最后一个元素的后一个位置的正向迭代器
例子:
int main()
{list<int> lt(5, 2);// 正向迭代器遍历容器list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it << " ";it++;}cout << endl; return 0;
}
2.rbegin和rend
rbegin:能够得到容器中最后一个元素的反向迭代器
rend:能够得到容器中第一个元素的前一个位置的反向迭代器
例子:
int main()
{list<int> lt(5, 2);//反向迭代器遍历容器list<int>::reverse_iterator rit = lt.rbegin();while (rit != lt.rend()){cout << *rit << " ";rit++;}cout << endl;return 0;
}
获取元素
front和back
front:能够获取list容器中的第一个元素
back:能够获取list容器中的最后一个元素
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);cout << lt.front() << endl; //1cout << lt.back() << endl; //3return 0;
}
容器中元素个数和容量的控制
1.size
能够获取当前容器当中的数据个数
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);cout << lt.size() << endl; //3return 0;
}
2.resize
resize的使用规则:
1、当所给值大于当前的size时,将size扩大到该值,扩大的数据为第二个所给值,若未给出,则默认为容器所存储类型的默认构造函数所构造出来的值进行填充。
2、当所给值小于当前的size时,将size缩小到该值。
例子:
int main()
{list<int> lt(5, 2);for (auto e : lt){cout << e << " ";}cout << endl; //2 2 2 2 2lt.resize(8, 3); //将size扩大为8,扩大的填充的值为3for (auto e : lt){cout << e << " ";}cout << endl; //2 2 2 2 2 3 3 3lt.resize(3); //将size缩小为3for (auto e : lt){cout << e << " ";}cout << endl; //2 2 2return 0;
}
3.empty
能够用于判断容器是否为空
例子:
int main()
{list<int> lt;cout << lt.empty() << endl; // true 为空return 0;
}
4.clear
能够用于清空容器
例子:
int main()
{list<int> lt(5, 2);cout << lt.size() << endl; //5lt.clear(); //清空容器cout << lt.size() << endl; //0return 0;
}
其它操作函数
1.sort
能够用于将容器中的数据进行排序。
默认排序顺序为升序
例子:
int main()
{list<int> lt;lt.push_back(2);lt.push_back(9);lt.push_back(4);lt.push_back(0);lt.push_back(6);lt.push_back(7);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; // 2 9 4 0 6 7 3lt.sort(); //默认将容器内数据排为升序for (auto e : lt){cout << e << " ";}cout << endl; //0 2 3 4 6 7 9return 0;
}
注意: 如果要进行降序排序,就需要自己实现比较函数
2.splice
能够用于两个list容器之间的拼接
有三种拼接方式:
1、将整个容器拼接到另一个容器的指定迭代器位置。
2、将容器当中的某一个数据拼接到另一个容器的指定迭代器位置。
3.将容器指定迭代器区间的数据拼接到另一个容器的指定迭代器位置。
例子:
int main()
{list<int> lt1(3, 2);list<int> lt2(3, 3);// 第一种拼接方式lt1.splice(lt1.begin(), lt2); //将容器lt2拼接到容器lt1的开头for (auto e : lt1){cout << e << " ";}cout << endl; //2 2 2 3 3 3list<int> lt3(3, 2);list<int> lt4(3, 3);// 第二种拼接方式lt3.splice(lt3.begin(), lt4, lt4.begin()); //将容器lt4的第一个数据拼接到容器lt3的开头for (auto e : lt3){cout << e << " ";}cout << endl; //3 2 2 2list<int> lt5(3, 2);list<int> lt6(3, 3);// 第三种拼接方式lt5.splice(lt5.begin(), lt6, lt6.begin(), lt6.end()); //将容器lt6的指定迭代器区间内的数据拼接到容器lt5的开头for (auto e : lt5){cout << e << " ";}cout << endl; //3 3 3 2 2 2return 0;
}
注意: 当一个容器中的数据被拼接到另一个容器中后,数据在原容器中就不存在了。所以拼接即是将该节点拼接到另一个容器中。
3.remove
能够删除容器中特定值的节点
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(3);lt.push_back(2);lt.push_back(2);lt.push_back(3);for (auto e : lt){cout << e << " ";}cout << endl; //1 3 2 2 3lt.remove(2); //删除容器当中值为2的节点for (auto e : lt){cout << e << " ";}cout << endl; //1 3 3return 0;
}
4.remove_if
能够删除容器中满足条件的节点
例子:
bool digit(const int& val)
{return val > 10;
}
int main()
{list<int> lt;lt.push_back(12);lt.push_back(3);lt.push_back(6);lt.push_back(19);lt.push_back(1);lt.push_back(5);for (auto e : lt){cout << e << " ";}cout << endl; //12 3 6 19 1 5// 删除条件lt.remove_if(digit); //删除容器当中值大于10的元素for (auto e : lt){cout << e << " ";}cout << endl; //3 6 1 5return 0;
}
5.unique
能够删除容器中连续的重复函数
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(5);lt.push_back(2);lt.push_back(3);lt.push_back(2);for (auto e : lt){cout << e << " ";}cout << endl; //1 5 2 3 2lt.sort(); //将容器当中的元素排为升序 1 2 2 3 5lt.unique(); //删除容器当中连续的重复元素for (auto e : lt){cout << e << " ";}cout << endl; //1 3 5return 0;
}
注意: 如果希望通过unique实现去重,需要对容器中的元素进行排序,因为unique是对连续的重复的节点去重,所以前提是连续。
6.merge
能够将一个有序的list容器合并到另一个有序的容器中,使合并之后的list容器仍然有序。即类似于归并排序
例子:
int main()
{list<int> lt1;lt1.push_back(3);lt1.push_back(5);lt1.push_back(2);list<int> lt2;lt2.push_back(4);lt2.push_back(1);lt2.push_back(6);lt1.sort(); //将容器lt1排为升序 2 3 5lt2.sort(); //将容器lt2排为升序 1 4 6lt1.merge(lt2); //将lt2合并到lt1当中for (auto e : lt1){cout << e << " ";}cout << endl; //1 2 3 4 5 6return 0;
}
7.reverse
能够将容器中的节点顺序进行逆置
例子:
int main()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.reverse(); //将容器当中元素的位置进行逆置for (auto e : lt){cout << e << " ";}cout << endl; //3 2 1 return 0;
}
8.assign
能够用于将新内容分配给容器,替换当前内容
新内容的两种替换方式:
1.将n个值为val的数据分配给容器
2.将所给迭代器区间当中的内容分配给容器。
例子:
int main()
{list<char> lt(3, 'a');// 方式一lt.assign(3, 'b'); //将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";}cout << endl; //b b bstring s("hello world");// 方式二lt.assign(s.begin(), s.end()); //将新内容分配给容器,替换其当前内容for (auto e : lt){cout << e << " ";}cout << endl; //h e l l o w o r l dreturn 0;
}
9.swap
能够将两个容器的内容进行交换
例子:
int main()
{list<int> lt1(3, 1);list<int> lt2(2, 4);lt1.swap(lt2); //交换两个容器的内容for (auto e : lt1){cout << e << " ";}cout << endl; //4 4for (auto e : lt2){cout << e << " ";}cout << endl; //1 1 1return 0;
}
相关文章:
C++ stl中的list的相关函数用法
文章目录 list的介绍list的使用定义方式 插入和删除迭代器的使用获取元素容器中元素个数和容量的控制其它操作函数 list的使用,首先要包含头文件 #include <list>list的介绍 1.list是一种可以在常数范围内在链表中的任意位置进行插入和删除的序列式容器&…...
Cmd命令大全,从入门到放弃
1、文件和目录操作 dir /p:分页显示目录内容。 dir /w:以单行显示目录内容。 dir /s:显示指定目录及子目录下的所有文件。 dir /b:仅显示文件和目录名称。 dir /a:显示具有特定属性的文件和目录。 cd /d:改变当前驱动器。 pushd:将当前目录压入堆栈,并切换到指定…...
数据同步选择推Push还是拉Pull
数据同步选择“推”(Push)还是“拉”(Pull”,要根据实际场景、系统架构和对实时性、资源消耗、安全性的需求来决定。下面是两种方式的对比分析,帮你更好地判断: 文章目录 推模式(Pushÿ…...
Kafka集群加入新Broker节点会发生什么
Kafka集群加入新Broker节点会发生什么 当向现有的Kafka集群添加新的Broker节点时,会触发一系列自动和手动的过程。以下是详细的流程和影响: 自动发生的流程 集群发现与注册 新Broker启动时会向ZooKeeper注册自己加入集群的/brokers/ids路径下其他Broke…...
【LeetCode Solutions】LeetCode 176 ~ 180 题解
CONTENTS LeetCode 176. 第二高的薪水(SQL 中等)LeetCode 177. 第 N 高的薪水(SQL 中等)LeetCode 178. 分数排名(SQL 中等)LeetCode 179. 最大数(中等)LeetCode 180. 连续出现的数字…...
Sourcetree安装使用的详细教程
Sourcetree 是由 Atlassian 推出的 免费 Git 图形化客户端,支持 Git 和 Mercurial 仓库管理,适用于 Windows 和 macOS。 一、安装教程 1. 下载 官网地址:Sourcetree | Free Git GUI for Mac and Windows 选择你的平台下载安装包࿰…...
对比学习入门
Yann Lecun在NIPS 2016上提出了著名的“蛋糕比喻”:如果智能是一个蛋糕,蛋糕上的大部分是无监督学习(unsupervised learning),蛋糕上的糖霜是监督学习(supervised learning),而蛋糕上…...
Starrocks 的 ShortCircuit短路径
背景 本文基于 Starrocks 3.3.5 本文主要来探索一下Starrocks在FE端怎么实现 短路径,从而加速点查查询速度。 在用户层级需要设置 enable_short_circuit 为true 分析 数据流: 直接到StatementPlanner.createQueryPlan方法: ... OptExpres…...
Windows远程访问Ubuntu的方法
要在Windows上远程访问Ubuntu系统,以下是几种常见的方法: SSH (Secure Shell):通过Windows命令行远程连接到Ubuntu。 在Ubuntu上,确保安装并启用了SSH服务(通常可以通过sudo apt update && sudo apt install openssh-serv…...
23种设计模式-行为型模式之模板方法模式(Java版本)
Java 模板方法模式(Template Method Pattern)详解 🧠 什么是模板方法模式? 模板方法模式是一种行为型设计模式,定义了一个操作中的算法骨架,将一些步骤的实现延迟到子类中。通过模板方法模式,…...
(undone) MIT6.S081 Lec17 VM for APP 学习笔记
url: https://mit-public-courses-cn-translatio.gitbook.io/mit6-s081/lec17-virtual-memory-for-applications-frans/17.1-ying-yong-cheng-xu-shi-yong-xu-ni-nei-cun-suo-xu-yao-de-te-xing 17.1 应用程序使用虚拟内存所需要的特性 今天的话题是用户应用程序使用的虚拟内存…...
值拷贝、浅拷贝和深拷贝
✅ 一、基本概念 1. 值拷贝(Value Copy) 含义:将一个变量的值完整复制到另一个变量中。 对象级别表现:调用的是拷贝构造函数(copy constructor)。 特点:对基本类型或不含动态资源的对象&…...
JWT原理及工作流程详解
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间安全传输信息。其核心原理是通过结构化、签名或加密的JSON对象实现无状态身份验证和授权。以下是JWT的工作原理和关键组成部分: 1. JWT结构 J…...
广西某建筑用花岗岩矿自动化监测
1. 项目简介 某矿业有限公司成立于2021年,是由某建筑材料有限公司与个人共同出资成立,矿区面积0.4069平方公里,可开采筑用花岗岩、建筑用砂岩。建筑用花岗岩、建筑用砂岩可利用资源量分别为6338.69万吨、303.39万吨,设计生产规模…...
100个思维模型系列更新完毕!
giszz的粉丝们,到今天为止,思维模型专栏已经更新了100期,正式告一段落了。 以下是为你列出的100个思维模型名字(部分思维模型可能存在多种表述方式,但核心概念一致,这里尽量涵盖不同领域常见的思维模型&am…...
Bitcoin跨链协议Clementine的技术解析:重构DeFi生态的信任边界
2025年5月2日,比特币Rollup项目Citrea在测试网正式推出跨链协议Clementine,其基于BitVM2编程语言构建的信任最小化桥接技术,被视为解决比特币与DeFi生态融合难题的关键突破。本文从技术背景、核心机制、安全模型、应用场景四大维度࿰…...
北斗导航 | RTKLib中重难点技术,公式,代码
Rtklib 一、抗差自适应卡尔曼滤波1. **核心难点**2. **公式与代码实现**二、模糊度固定与LAMBDA算法1. **核心难点**2. **LAMBDA算法实现**3. **部分模糊度固定技术**三、伪距单点定位与误差修正1. **多系统多频点修正**2. **接收机钟差与系统间偏差**四、动态模型与周跳处理1.…...
C++学习之类和对象_1
1. 面向过程与面向对象 C语言是面向过程的,注重过程,通过调用函数解决问题。 比如做番茄炒蛋:买番茄和鸡蛋->洗番茄和打鸡蛋->先炒蛋->把蛋放碟子上->炒番茄->再把蛋倒回锅里->加调料->出锅 而C是面向对象的ÿ…...
Oracle OCP认证考试考点详解083系列14
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 66. 第66题: 题目 解析及答案: 当一个非常大的数据文件被划分为四个部分进行 RMAN 多区段备份时,以下…...
华为欧拉(EulerOS)系统全栈软件部署指南:从 Redis 到 MySQL 实战详解
前言 在国产化操作系统蓬勃发展的背景下,华为欧拉(EulerOS)凭借其稳定性与安全性,成为企业级服务器部署的重要选择。本文基于官方技术文档与最佳实践,详细梳理 Redis 集群、RabbitMQ、JDK、Tomcat 及 MySQL 在欧拉系统…...
YOLO使用CableInspect-AD数据集实现输电线路缺陷检测
输电线路缺陷检测是一个关键的任务,旨在确保电力传输系统的可靠性和安全性。今天我们使用CableInspect-AD数据集进行训练完成缺陷检测,下载的数据集格式如下: 我们需要经过以下步骤: COCO转YOLO 首先是将COCO格式的数据转换为YO…...
全国青少年信息素养大赛 Python编程挑战赛初赛 内部集训模拟试卷五及详细答案解析
博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解...
三个线程 a、b、c 并发运行,b,c 需要 a 线程的数据如何解决
说明: 开发中经常会碰到线程并发,但是后续线程需要等待第一个线程执行完返回结果后,才能再执行后面线程。 如何处理呢,今天就介绍两种方法 1、使用Java自有的API即CountDownLatch,进行实现 思考:CountDown…...
python实现点餐系统
使用python实现点餐系统的增加菜品及价格,删除菜品,查询菜单,点菜以及会员折扣价等功能。 代码: 下面展示一些 内联代码片。 # coding utf-8menu {拍黄瓜: 6, 小炒肉: 28, 西红柿炒蛋: 18, 烤鱼: 30, 红烧肉: 38, 手撕鸡: 45,…...
力扣26——删除有序数组中的重复项
目录 1.题目描述: 2.算法分析: 3.代码展示: 1.题目描述: 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对…...
A2A与MCP定义下,User,Agent,api(tool)间的交互流程图
官方图: 流程图: #mermaid-svg-2smjE8VYydjtLH0p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2smjE8VYydjtLH0p .error-icon{fill:#552222;}#mermaid-svg-2smjE8VYydjtLH0p .error-tex…...
【大模型面试每日一题】Day 13:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者?
【大模型面试每日一题】Day 13:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者? 📌 题目重现 🌟🌟 面试官:数据并行与模型并行的区别是什么?ZeRO优化器如何结合二者&…...
各种注解含义及使用
RestController RestController注解 是Spring 4.0引入的一个组合注解,用于简化RESTful Web服务的开发。 RestController注解 相当于 Controller 和 ResponseBody 注解的组合,表示该类是一个控制器,并且所有的方法返回值都将直接写入HTTP响应体…...
amass:深入攻击面映射和资产发现工具!全参数详细教程!Kali Linux教程!
简介 OWASP Amass 项目使用开源信息收集和主动侦察技术执行攻击面网络映射和外部资产发现。 此软件包包含一个工具,可帮助信息安全专业人员使用开源信息收集和主动侦察技术执行攻击面网络映射并执行外部资产发现。 使用的信息收集技术 技术数据来源APIs…...
xxl-job简单入门使用教程
1、从git中拉取xxl-job代码 https://gitee.com/xuxueli0323/xxl-job HTTPS:git clone https://gitee.com/xuxueli0323/xxl-job.git SSH:git clone gitgitee.com:xuxueli0323/xxl-job.git 拉取本地后,使用Idea打开项目,当前使用…...
设置GO程序在离线情况下读取本地缓存的模块
在 Go 中,GOPROXY 环境变量用于指定模块代理服务器的地址。如果你想让 GOPROXY 读取本地的模块,可以通过以下几种方式实现: 1. 使用本地代理服务器 你可以搭建一个本地的 Go 模块代理服务器,将需要的模块代码推送到代理服务器中…...
Python 爬虫基础入门教程(超详细)
一、什么是爬虫? 网络爬虫(Web Crawler),又称网页蜘蛛,是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为,向网站发送请求,然后获取网页内容并提取有用的数据。 二、Python爬虫的基本原…...
C语言实现三子棋
目录 1.通过模块化来实现三子棋 2.三子棋代码基本逻辑 3.代码的书写 第一步: 第二步: 第三步: 第四步: gane.h gane.c main.c 第五步: game.h game.c main.c 第六步: game.h game.c main…...
SCDN是什么?
SCDN是安全内容分发网络的简称,它在传统内容分发网络(CDN)的基础上,集成了安全防护能力,旨在同时提升内容传输速度和网络安全性。 SCDN的核心功能有: DDoS防御:识别并抵御大规模分布式拒绝服务…...
Transformer编码器+SHAP分析,模型可解释创新表达!
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基本介绍 基于SHAP分析的特征选择和贡献度计算,Matlab2023b代码实现;基于MATLAB的SHAP可解释Transformer编码器回归模型,敏感性分析方法。 详细介绍 引言 在正向渗透(…...
机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据
机器学习第三讲:监督学习 → 带答案的学习册,如预测房价时需要历史价格数据 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署࿱…...
【TACD模拟】质子辐照对GaN器件临界电压增加的影响机制
2013 年,佛罗里达大学的 Erin Patrick 等人基于 TRIM 和 FLOODS 模型,研究了质子辐照对 AlGaN/GaN HEMTs 的影响。研究背景方面,AlGaN/GaN HEMTs 因其宽禁带、高击穿场、高电子迁移率以及优秀的热管理能力,在商业和军事领域应用前景广阔,但长期可靠性仍是问题,尤其是栅极…...
VBA高级应用30例应用4:利用屏蔽事件来阻止自动运行事件
《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以…...
基于SSM实现的健身房系统功能实现八
一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人们健康意识的不断提升,健身行业也在迅速扩展。越来越多的人加入到健身行列,健身房的数量也在不断增加。这种趋势使得健身房的管理变得越来越复杂,传统的手工或部分自动化的管…...
Java设计模式之原型模式详解:从入门到精通
1. 原型模式概述 1.1 定义与核心概念 **原型模式(Prototype Pattern)**是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过new关键字实例化。这种模式特别适用于创建成本较高的对象。 专业术语解释表: 术语解释原型(Prototype)被复制的原始对象克隆(Clone)…...
鞋样设计软件
Sxy 64鞋样设计软件是一款专业级鞋类设计工具 专为鞋业设计师与制鞋企业开发 该软件提供全面的鞋样设计功能 包括二维开版 三维建模 放码排料等核心模块 支持从草图构思到成品输出的完整设计流程 内置丰富的鞋型数据库与部件库 可快速生成各种鞋款模板 软件采用智能放码技术 精…...
移动IP与手机移动数据流量的概念、原理、区别与联系
移动IP与手机移动数据流量的概念、原理、区别与联系 文章目录 移动IP与手机移动数据流量的概念、原理、区别与联系一、概念与原理二、核心区别三、联系与协作四、技术挑战与发展趋势五、总结 一、概念与原理 移动IP 定义:移动IP是一种网络层协议,允许设…...
Spring中除DI之外获取 BEAN 的方式
前言 在 Spring 框架的开发实践中,获取 Bean 是极为重要的基础操作。我们熟知通过依赖注入能便捷地获取 Bean,不过在许多场景下,还需要借助其他方式来获取 Bean。本文将深入探讨在 Spring 中除了依赖注入之外获取 Bean 的多种方式,…...
屎上雕花系列-2nd
以下为“屎上雕花”的尝试2nd 使用Deepseek扩容而来,我竟然没有找到明显的错误,太强大了,工作改变生活了 LeCroy 以太网与 SAN 网络测试解决方案 硬件平台一:Xena 以太网流量生成器 Xena 以太网流量生成器是一款高性能的网络测…...
第十五章,SSL VPN
前言 IPSec 和 SSL 对比 IPSec远程接入场景---client提前安装软件,存在一定的兼容性问题 IPSec协议只能够对感兴趣的流量进行加密保护,意味着接入用户需要不停的调整策略,来适应IPSec隧道 IPSec协议对用户访问权限颗粒度划分的不够详细&…...
第四天 从CAN总线到Spark/Flink实时处理
前言 在智能网联汽车快速发展的今天,每辆汽车每天产生的数据量高达数GB。这些数据蕴藏着驾驶行为、车辆健康、道路状况等宝贵信息。本文将带您从零开始,系统学习车辆数据采集与分析的全流程技术体系,包含: CAN总线数据解析与采集…...
pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?
pivot_table 和 groupby 是 pandas 中两种常用的数据聚合方法,它们都能实现数据分组和汇总,但在使用方式和输出结构上有显著区别。 0. 基本介绍 groupby分组聚合 groupby 是 Pandas 库中的一个功能强大的方法,用于根据一个或多个列对数据进…...
AI客服问答自动生成文章(基于deepseek实现)
小编一直在用AI做网站平台文章的润色或者二创。一直有一个想法,在自己网站加一个AI智能客服,通过文心或者deepseek来智能回答网友提出的问题,这样就能减少很多人工回复的麻烦,提高互动效率。 开发背景 其实很多网友提出的问题非…...
镜头内常见的马达类型(私人笔记)
① 螺杆式马达 驱动来源:机身内马达。镜头尾部有一个接收“螺杆”的接口,通过机械传动带动镜头对焦组。缺点:慢、吵、不能用于无机身马达的相机。✅ 典型镜头:尼康 AF、AF-D 系列;美能达老镜头。尼康传统的AF镜头通过…...
从 JMS 到 ActiveMQ:API 设计与扩展机制分析(一)
引言 在当今的分布式系统开发中,消息中间件扮演着举足轻重的角色,它为应用程序之间提供了可靠的异步通信机制。JMS(Java Message Service)作为 Java 平台上的消息服务规范,定义了一套通用的 API,使得开发者…...