【STL】set
在 C C C++ S T L STL STL 标准库中, s e t set set 是一个关联式容器,表示一个集合,用于存储唯一元素的容器。 s e t set set 中的元素会自动按照一定的顺序排序(默认情况下是升序)。这意味着在 s e t set set 中不能插入重复的元素,因为重复的元素会被忽略。
文章目录
- 前言 —— 关联式容器
- 一、set 的介绍
- 二、set 的使用(常用接口)
- 1. 常见构造
- 2. iterator 的使用
- 3. 增删查
- 4. multiset 和 set 的差异
- 三、set 的模拟实现
- 总结
前言 —— 关联式容器
关联式容器也是用来存储数据的,与序列式容器不同的是,关联式容器逻辑结构通常是非线性结构,两个位置有紧密的关联关系,交换一下,他的存储结构就被破坏了。
关联式容器中的元素是按关键字( k e y key key)来保存和访问的。
C C C++ S T L STL STL 中主要提供了以下关联式容器:
-
s e t / m u l t i s e t set/multiset set/multiset(集合 / / /多重集合)
-
m a p / m u l t i m a p map/multimap map/multimap(映射 / / /多重映射)
-
u n o r d e r e d _ s e t / u n o r d e r e d _ m u l t i s e t unordered\_set/unordered\_multiset unordered_set/unordered_multiset(无序集合 / / /多重无序集合)
-
u n o r d e r e d _ m a p / u n o r d e r e d _ m u l t i m a p unordered\_map/unordered\_multimap unordered_map/unordered_multimap(无序映射 / / /多重无序映射)
S T L STL STL 标准库中的 m a p map map 和 s e t set set 底层是用红黑树实现的,红黑树是一颗平衡二叉搜索树。
s e t set set 是 k e y key key 搜索场景的结构, m a p map map 是 k e y / v a l u e key/value key/value 搜索场景的结构。
一、set 的介绍
s e t set set 系列根据容器是否支持插入相同元素而分为了 s e t set set(集合)和 m u l t i s e t multiset multiset(多重集合)。
s e t set set 其实就是按特定顺序存储唯一元素的容器:
m u l t i s e t multiset multiset 其实就是按特定顺序存储元素的容器,其中多个元素可以具有等效的值:
由于最常用的还是 s e t set set 容器,因此这里主要介绍的是 s e t set set,而 m u l t i s e t multiset multiset 和 s e t set set 只有在一些地方有略微的不同,稍注意一下即可。
s e t set set 的声明如下:
template < class T, // set::key_type/value_typeclass Compare = less<T>, // set::key_compare/value_compareclass Alloc = allocator<T> // set::allocator_type> class set;
-
T T T 就是 s e t set set 底层关键字的类型。
-
s e t set set 默认要求 T T T 支持小于比较(
less<T>
,升序排序),如果不支持或者想按自己的需求走可以自行实现仿函数传给第二个模板参数。 -
s e t set set 底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第三个模板参数。
注意:一般情况下,我们都不需要传后两个模版参数。
s e t set set 底层是用红黑树实现的,增删查效率是 O ( l o g N ) O(logN) O(logN),迭代器遍历是走的搜索树的中序,所以是有序的。
二、set 的使用(常用接口)
下面只列举了 s e t set set 最常用的几个接口,更多详细信息可以自行查官方文档: s e t set set。
1. 常见构造
构造 ( c o n s t r u c t o r ) (constructor) (constructor) 函数声明 | 接口说明 |
---|---|
s e t ( ) set() set() | 无参默认构造 |
s e t ( c o n s t s e t & x ) set(const\ set\&\ x) set(const set& x) | 拷贝构造 |
s e t ( I n p u t I t e r a t o r f i r s t , I n p u t I t e r a t o r l a s t ) set(InputIterator\ first, InputIterator\ last) set(InputIterator first,InputIterator last) | 使用迭代器区间构造 |
s e t ( i n i t i a l i z e r _ l i s t < v a l u e _ t y p e > i l ) set (initializer\_list<value\_type> il) set(initializer_list<value_type>il) | 使用 i n i t i a l i z e r initializer initializer 列表构造 |
- 无参默认构造:
set<int> s1; // 升序
set<int, greater<int>> s2; // 降序
- 拷贝构造:
set<int> s = { 3,1,2,4,5 };
set<int> s1(s); // 升序
set<int, greater<int>> s2 = s; // 降序
- 迭代器区间构造:
int a[] = { 3,1,2,4,5 };
vector<int> v = { 3,1,2,4,5 };
set<int> s1(a ,a + 5); // 升序
set<int, greater<int>> s2(v.begin() ,v.end()); // 降序
- i n i t i a l i z e r initializer initializer 列表构造:
set<int> s1 = { 3,1,2,4,5 }; // 升序
set<int, greater<int>> s2({ 3,1,2,4,5 }); // 降序
2. iterator 的使用
i t e r a t o r iterator iterator 的使用 | 接口说明 |
---|---|
b e g i n ( ) begin() begin() + + + e n d ( ) end() end() | 正向迭代器( i t e r a t o r iterator iterator) |
r b e g i n ( ) rbegin() rbegin() + + + r e n d ( ) rend() rend() | 反向迭代器( r e v e r s e _ i t e r a t o r reverse\_iterator reverse_iterator) |
-
s e t set set 的迭代器支持正向和反向迭代遍历,遍历默认按升序顺序,因为底层是二叉搜索树,迭代器遍历走的是中序遍历。
-
支持迭代器就意味着支持范围 f o r for for。
-
s e t set set 的 i t e r a t o r iterator iterator 和 c o n s t _ i t e r a t o r const\_iterator const_iterator 都不支持迭代器修改数据,修改关键字数据,就破坏了底层搜索树的结构。
-
s e t set set 的迭代器是一个双向迭代器:
iterator -> a bidirectional iterator to const value_type
。
set<int> s = { 3,5,4,2,1 };// 1.正向迭代器
auto it = s.begin();
while (it != s.end())
{cout << *it << " ";++it;
}
cout << endl;// 2.反向迭代器
auto rit = s.rbegin();
while (rit != s.rend())
{cout << *rit << " ";++rit;
}
cout << endl;// 3.范围for
for (auto& e : s)
{cout << e << " ";
}
cout << endl;
输出:
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
3. 增删查
s e t set set 增删查 | 接口说明 |
---|---|
i n s e r t insert insert | 插入 v a l val val 数据 |
e r a s e erase erase | 删除 v a l val val 数据 |
f i n d find find | 查找 v a l val val,返回 v a l val val 位置的迭代器(没找到返回 e n d ( ) end() end()) |
c o u n t count count | 查找 v a l val val,返回 v a l val val 的个数 |
l o w e r _ b o u n d lower\_bound lower_bound | 返回大于等于 v a l val val 位置的迭代器 |
u p p e r _ b o u n d upper\_bound upper_bound | 返回大于 v a l val val 位置的迭代器 |
- 插入数据(
insert
):
vector<int> v = { 1,2,5 };
set<int> s;// 1.直接插入
s.insert(3);
// 2.指定位置插入
s.insert(s.begin(), 4);
// 3.迭代器区间插入
s.insert(v.begin(), v.end());
// 4.initializer插入
s.insert({ 6,7,8 });for (const auto& e : s) cout << e << " "; cout << endl;
输出:
1 2 3 4 5 6 7 8
- 查找 + 删除数据(
find + erase
):
set<int> s = { 1,2,3,4,5,6,7,8 };// 1.指定位置删除
s.erase(s.begin());
// 2.指定数据删除
s.erase(5);
// 3.迭代器区间删除
auto it = s.find(4); // 返回值对应的迭代器(没找到就返回s.end())
if(it != s.end())s.erase(s.begin(),it); // 前闭后开[s.begin(),it)for (const auto& e : s) cout << e << " "; cout << endl;
输出:
4 6 7 8
lower_bound / upper_bound
:
set<int> s = { 1,2,3,4,5,6,7,8 };auto it1 = s.lower_bound(3); // 返回第一个值 >= 3的迭代器
auto it2 = s.upper_bound(7); // 返回第一个值 > 3的迭代器// 删除[3,7]区间的数据
s.erase(it1,it2);for (const auto& e : s) cout << e << " "; cout << endl;
输出:
1 2 8
4. multiset 和 set 的差异
m u l t i s e t multiset multiset 和 s e t set set 的使用基本完全类似,主要区别点在于 m u l t i s e t multiset multiset 支持值冗余。
那么 i n s e r t / f i n d / c o u n t / e r a s e insert/find/count/erase insert/find/count/erase 都围绕着支持值冗余有所差异:
- i n s e r t insert insert 可以插入相同的值:
multiset<int> s = { 1,2,3,4,5,6,7,8 };
s.insert(6);
s.insert(6);
s.insert(6);for (const auto& e : s) cout << e << " "; cout << endl;
输出:
1 2 3 4 5 6 6 6 6 7 8
- 如果要查找的 x x x 有多个值, f i n d find find 会返回中序的第一个:
multiset<int> s = { 1,2,3,4,5,6,6,6,6,7,8 };auto it = s.find(6);
while (it != s.end() && *it == 6)
{cout << *it << " ";++it;
}
cout << endl;
输出:
6 6 6 6
- c o u n t count count 会返回 x x x 的实际个数:
multiset<int> s = { 1,2,3,4,5,6,6,6,6,7,8 };cout << "6的个数:" << s.count(6) << endl;
cout << "9的个数:" << s.count(9) << endl;
输出:
6的个数:4
9的个数:0
- e r a s e erase erase 指定值删除时,会删除所有的 x x x:
multiset<int> s = { 1,2,3,4,5,6,6,6,6,7,8 };// 1.指定迭代器删除只会删除一个值
auto it = s.find(6);
s.erase(it);
for (const auto& e : s) cout << e << " "; cout << endl;// 2.指定值删除会删除所有的值
s.erase(6);
for (const auto& e : s) cout << e << " "; cout << endl;
输出:
1 2 3 4 5 6 6 6 7 8
1 2 3 4 5 7 8
三、set 的模拟实现
总结
相关文章:
【STL】set
在 C C C S T L STL STL 标准库中, s e t set set 是一个关联式容器,表示一个集合,用于存储唯一元素的容器。 s e t set set 中的元素会自动按照一定的顺序排序(默认情况下是升序)。这意味着在 s e t set set 中不能…...
信奥还能考吗?未来三年科技特长生政策变化
近年来,科技特长生已成为名校录取的“黄金敲门砖”。 从CSP-J/S到NOI,编程竞赛成绩直接关联升学优势。 未来三年,政策将如何调整?家长该如何提前布局? 一、科技特长生政策趋势:2025-2027关键变化 1. 竞…...
几何建模基础-拓扑命名实现及优化
1.背景介绍 1.1 什么是拓扑? 拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。 Body对象的拓扑可以理解为面(Face)与边(Edge)、边…...
浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek音乐创作最强玩法来了!
浙江大学DeepSeek系列专题线上公开课第二季第5期即将在今晚进行直播! 其中,今晚8点10分左右,浙大AI大佬张克俊教授将带来硬核的deepseek公开课讲座。 讲座 主题: 人工智能与音乐创作 主讲人: 张克俊 教授 人工智能作…...
electron-builder参数详解
electron-builder 是一个用于打包和构建 Electron 应用的工具,支持 macOS、Windows 和 Linux 平台,并提供了丰富的参数配置选项。 1、安装: npm install electron-builder --save-dev2、参数详解 命令: electron-builder build…...
PVE+CEPH+HA部署搭建测试
一、基本概念介绍 Proxmox VE Proxmox Virtual Environment (Proxmox VE) 是一款开源的虚拟化管理平台,基于 Debian Linux 开发,支持虚拟机和容器的混合部署。它提供基于 Web 的集中管理界面,简化了计算、存储和网络资源的配置与监控。P…...
Android Studio 日志系统详解
文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…...
【LLM】A2A 与 MCP:剖析 AI Agent 互联时代的两种关键协议
随着人工智能技术的飞速发展,AI Agent(智能体)正从理论走向实践,有望成为提升生产力的关键。然而,正如历史上任何新兴技术领域一样,标准的缺失导致了“筒仓效应”——不同来源、不同框架构建的 Agent 难以有…...
解析大尺寸液晶屏视觉检测,装配错位如何避免?
在3C电子产品种类飞速发展的今天,大尺寸液晶屏已成为市场主流,消费刚需。消费者对手机屏幕的视觉体验要求不断攀升,屏占比的提升成为各大手机厂商竞争的焦点。然而,大尺寸液晶屏在生产过程中面临着诸多检测难题,严重影…...
巴法云平台-TCP设备云-微信小程序实时接收显示数据-原理
微信小程序通过WebSocket或HTTP长轮询连接平台(而非直接使用TCP)!!! 物联网平台对协议层的一种封装设计——将底层通信协议(如TCP)与应用层业务逻辑(如主题路由)解耦&am…...
ElementNotInteractableException原因及解决办法
在自动化测试中,ElementNotInteractableException是一个常见的异常,它通常发生在尝试与网页上的某个元素进行交互(例如点击、输入等操作)时,但由于该元素当前不可交互。这可能由多种原因引起,以下是一些常见的原因及其解决方法: 元素未完全加载 如果尝试与页面上的元素交…...
信息系统项目管理师-工具名词解释(上)
本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 本文章记录学习过程中,重要的知识点,是否为重点的依据,来源于官方教材和历年考题,持续更新共勉 数据收集 头脑风暴 在短时间内获得大量创意,适用于团队环境,需要引导者…...
CSI-external-provisioner
main() 这段Go代码是一个CSI(容器存储接口)Provisioner(供应器)的实现,用于在Kubernetes集群中动态提供持久卷。代码涉及多个组件和步骤,下面是对关键部分的解释: 初始化和配置 命令行标志和…...
OpenAI为抢跑AI,安全底线成牺牲品?
几年前,如果你问任何一个AI从业者,安全测试需要多长时间,他们可能会淡定地告诉你:“至少几个月吧,毕竟这玩意儿可能改变世界,也可能毁了它。”而现在,OpenAI用实际行动给出了一个新答案——几天…...
单片机任意普通IO引脚使用定时器扩展外部中断的巧妙方法
在嵌入式系统中,将任意一个IO端口配置为外部中断源是一种常见的需求,尤其是在硬件资源有限的情况下。通过定时器扩展外部中断的方法,可以在不依赖专用中断引脚的情况下,实现对外部信号的实时响应。以下是一种基于定时器扩展外部中…...
arcgis几何与游标(1)
本节我们对几何进行展开学习 ArcPy 的几何对象 在 ArcPy 中,几何对象是表示地理空间数据的核心。它包括点(Point)、多点(Multipoint)、线(Polyline)和面(Polygon)等类型…...
安全密码处理实践
1. 引言 在现代应用程序中,密码存储和验证的安全性 直接关系到用户数据的保护。密码泄露事件频繁发生,通常是由于不安全的存储方式 或 弱加密处理 导致的。为了提高密码的安全性,开发者需要遵循一系列安全密码处理 的最佳实践。 本篇文章将详细介绍如何在应用程序中安全地…...
can‘t set boot order in virtualbox
Boot order setting is ignored if UEFI is enabled https://forums.virtualbox.org/viewtopic.php?t99121 如果勾选EFI boot order就是灰色的 传统BIOS就是可选的 然后选中任意介质,通过右边的上下箭头调节顺序,最上面的应该是优先级最高的 然后就…...
电池分选机详细介绍
在当今这个科技飞速发展的时代,电池作为能源存储的重要载体,其性能的一致性和稳定性对于各类电子设备和电动汽车等应用至关重要。而电池分选机,作为电池生产过程中的关键环节,正扮演着越来越重要的角色。本文将带您深入了解电池分…...
深入理解浏览器的 Cookie:全面解析与实践指南
在现代 Web 开发中,Cookie 扮演着举足轻重的角色。它不仅用于管理用户会话、记录用户偏好,还在行为追踪、广告投放以及安全防护等诸多方面发挥着重要作用。随着互联网应用场景的不断丰富,Cookie 的使用和管理也日趋复杂,如何在保障…...
浙江大学DeepSeek系列专题线上公开课第二季第五期即将上线!deepseek人文艺术之美专场来啦!
浙江大学DeepSeek系列专题线上公开课第二季第五期即将重磅上线! 其中,今晚7点半,浙大AI大神陈为教授将带来硬核的deepseek公开课讲座。 讲座 主题: DeepSeek时代,让AI更懂中国文化的美与善 主讲人: 陈为 …...
5分钟学会接口自动化测试框架
今天,我们来聊聊接口自动化测试。 接口自动化测试是什么?如何开始?接口自动化测试框架如何搭建? 自动化测试 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发…...
Flink DataStream API深度解析(Scala版):窗口计算、水位线与状态编程
在前面的文章中Flink 编程基础:Scala 版 DataStream API 入门-CSDN博客,我们已经介绍了 Flink 的 Datastream API 编程模型、窗口划分以及时间语义(处理时间、事件时间等)。本篇文章将深入讲解窗口计算的进阶内容,包括…...
【从零实现高并发内存池】内存池整体框架设计 及 thread cache实现
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
#MES系统中的一些相关的名词
📌MES系统 部分 术语表 缩写英文全称中文名称详细解释MESManufacturing Execution System制造执行系统用于连接计划系统与生产现场,实时管理和控制整个生产过程,覆盖物料、人员、设备、质量、指令等。ERPEnterprise Resource Planning企业资…...
《灵活的接口设计:如何支持多种后端数据存取实现》
《灵活的接口设计:如何支持多种后端数据存取实现》 一、引言:从单一适配到多样需求 在现代软件开发中,系统通常需要与不同的数据存储后端进行交互,例如关系型数据库(MySQL、PostgreSQL)、NoSQL 数据库(MongoDB、Redis)或文件存储(JSON、CSV)。为了增强系统的可扩展性…...
Spark-SQL核心编程(一)
一、Spark-SQL 基础概念 1.定义与起源:Spark SQL 是 Spark 用于结构化数据处理的模块,前身是 Shark。Shark 基于 Hive 开发,提升了 SQL-on-Hadoop 的性能,但因对 Hive 依赖过多限制了 Spark 发展,后被 SparkSQL 取代&…...
Qt:解决MSVC编译器下qDebug输出中文乱码的问题
问题描述: 使用msvc编译器,通过qDebug输出打印信息为乱码(显示问号或者乱码) 百度到以下方案,但是没有效果 最终解决: 在.pro文件中添加如下,重新构建运行即可显示中文内容 msvc:QMAKE_CXXFLAGS -exec…...
Go:接口
接口既约定 Go 语言中接口是抽象类型 ,与具体类型不同 ,不暴露数据布局、内部结构及基本操作 ,仅提供一些方法 ,拿到接口类型的值 ,只能知道它能做什么 ,即提供了哪些方法 。 func Fprintf(w io.Writer, …...
js | 网页上的 json 数据怎么保存到本地表格中?
1.思路 json 转为 csv 保存到本地或者:json 转为 html 显示到网页中,然后复制到excel中。 (2) 数据 wjl{"code":1,"data":[{"chrmiRNA":"chr1","0":"chr1","startmiRNA":&quo…...
智能Todo协作系统开发日志(二):架构优化与安全增强
📅 2025年4月14日 | 作者:Aphelios380 🌟 今日优化目标 在原Todo单机版基础上进行三大核心升级: 组件化架构改造 - 提升代码可维护性 本地数据加密存储 - 增强隐私安全性 无障碍访问支持 - 践行W3C标准 一、组件化架构改造 …...
buctoj_算法设计与分析(5)
问题 A: 没有上司的舞会 题目描述 Ural大学有N名职员,编号为1~N。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 HiHi 给出,其中 1≤i≤N。 现在要召开一场周年庆宴会&#x…...
VUE项目中的package.json中的启动脚本
"scripts": {"dev": "vite","build:prod": "vite build","build:stage": "vite build --mode staging","preview": "vite preview"}vite build 和 vite build --mode staging 是 V…...
目标追踪数据标注
在将 YOLO(目标检测) 和 DeepSORT(目标追踪) 结合时,数据标注需要同时满足 检测 和 追踪 的需求。以下是具体的分阶段标注策略和操作指南: 一、标注的核心要求 检测标注:每帧中目标的 边界框&a…...
详细介绍7大排序算法
1.排序的概念及其运用 1.1 排序的概念 排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的关键字的记…...
TGCTF web
AAA偷渡阴平 这个题是一个非预期的无参RCE <?php$tgctf2025$_GET[tgctf2025];if(!preg_match("/0|1|[3-9]|\~|\|\|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\|\|\{|\[|\]|\}|\:|\|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $tgctf2025)){//hi…...
RTPS数据包分析
DDS-RTPS 常见子消息_dds pdp消息-CSDN博客Fast RTPS原理与代码分析(3):动态发现协议之端点发现协议EDP_fast-rtps 原理-CSDN博客 在RTPS(Real-Time Publish-Subscribe,实时发布订阅)协议中,DATA(r)和DATA是两种不同的…...
go语言gRPC使用流程
1. 安装工具和依赖 安装 Protocol Buffers 编译器 (protoc) 下载地址:https://github.com/protocolbuffers/protobuf/releases 使用说明:https://protobuf.dev/ 【centos环境】yum方式安装:protoc[rootlocalhost demo-first]# yum install …...
回溯算法的要点
可以用树结构(解空间树)来表示用回溯法解决的问题的所有选项。 叶节点则对应着最终的状态. 回溯过程:深度遍历,在任意时刻,算法只保存从根结点到当前结点的路径。 “剪枝”:当某一节点不包含问题的解&am…...
爬虫: 一文掌握 pycurl 的详细使用(更接近底层,性能更高)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、PycURL概述1.1 PycURL介绍1.2 基本安装1.3 安装依赖(Linux/macOS)1.4 常用选项参考二、基本使用2.1 简单 GET 请求2.2 获取响应信息2.3 设置请求头2.4 超时设置2.5 跟随重定向三、高级功能3.1 POST 请求3.2 文件上…...
大模型文生图
提示词分4个部分:质量,主体,元素,风格 质量:杰作,高质量,超细节,完美的精度,高分辨率,大师级的; 权重:把图片加括号,&am…...
c# AI编程助手 — Fitten Code
前言 前有Copilot各种酷炫操作,今有国产软件杀出重围。给大家介绍的是一款国内的国产编程神器,可与微软GitHub Copilot比比身手。关键它还是完全免费。它就是:非十团队国产自主研发的Fitten Code。此工具的速度是GitHub Copilot的两倍&#x…...
《植物大战僵尸融合版v2.4.1》,塔防与创新融合的完美碰撞
《植物大战僵尸融合版》是基于经典塔防游戏《植物大战僵尸》的创意同人改版,由“蓝飘飘fly”等开发者主导制作。它在保留原版核心玩法的基础上,引入了独特的植物融合机制,玩家可以将不同的植物进行组合,创造出全新的植物种类&…...
深度学习总结(12)
层:深度学习的基础模块 神经网络的基本数据结构是层。层是一个数据处理模块,它接收一个或多个张量作为输入,并输出一个或多个张量。有些层是无状态的,但大多数层具有状态,即层的权重。权重是利用随机梯度下降学到的一个或多个张量…...
pyqt环境配置
文章目录 1 概述2 PyQt6和PySide6区别3 环境配置4 配置PySide65 配置PyQt66 配置外部工具7 添加模板8 使用pyside6-project构建工程9 常见错误10 相关地址 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 …...
YOLO11改进——融合BAM注意力机制增强图像分类与目标检测能力
深度学习在计算机视觉领域的应用取得了显著进展,尤其是在目标检测(Object Detection)和图像分类(Image Classification)任务中。YOLO(You Only Look Once)系列算法凭借其高效的单阶段检测框架和…...
考研单词笔记 2025.04.14
amount n数量,数额v(数量)达到,总计(to),意味着,相当于 couple n一对,一双,一些,几个,夫妻,情侣v连接,结合 …...
AI云游戏盒子:未来娱乐的新纪元
AI云游戏盒子:未来娱乐的新纪元 随着科技的不断进步,人工智能(AI)与云计算技术的结合正在重新定义我们享受数字娱乐的方式。2025年,一款名为“AI云游戏盒子”的产品正逐渐成为家庭娱乐的核心设备,它不仅集…...
第八章 文件操作
第八章 文件操作 文章目录 第八章 文件操作1 文件读取1 将文件整个读取内存2 按字节读取文件 1 文件读取 1 将文件整个读取内存 类似于python的 with open(filename, modert, encodingutf-8) as f:res f.read()go中的书写方式: 方式一: package ma…...
《extern:如何在编译时“暗通款曲“》
C中extern关键字的完整用法总结 extern是C中管理链接性(linkage)的重要关键字,主要用于声明外部定义的变量或函数。以下是详细的用法分类和完整示例: 一、基本用法 1. 声明外部全局变量 // globals.cpp int g_globalVar 42; …...