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

C++ STL常用函数一览表(快速记忆版本)

C STL 常用数据结构与函数整理这份笔记按常见 STL 容器分类整理适合在刷题和复习时快速查阅。1.vector1.1 特点底层是动态数组支持随机访问尾部插入、删除效率高中间插入、删除效率低1.2 常用定义vectorintv;vectorintv(5);// 5 个 0vectorintv(5,10);// 5 个 10vectorintv2(v);// 拷贝vectorintv{1,2,3};1.3 常用函数函数作用v.size()返回元素个数v.empty()判断是否为空v.push_back(x)尾部插入v.pop_back()删除最后一个元素v.back()访问最后一个元素v.front()访问第一个元素v[i]访问下标为i的元素v.at(i)访问下标为i的元素越界会检查v.clear()清空v.begin()首元素迭代器v.end()尾后迭代器v.insert(pos, x)在pos前插入v.erase(pos)删除pos位置元素v.erase(l, r)删除区间[l, r)v.resize(n)调整大小v.reserve(n)预留容量1.4 常见写法vectorintv{3,1,4};v.push_back(10);v.pop_back();for(inti0;i(int)v.size();i){coutv[i] ;}for(intx:v){coutx ;}1.5 常用算法配合sort(v.begin(),v.end());// 升序sort(v.begin(),v.end(),greaterint());// 降序reverse(v.begin(),v.end());// 反转2.deque2.1 特点双端队列头尾都可以高效插入删除支持随机访问常用于单调队列、滑动窗口2.2 常用定义dequeintdq;dequeintdq{1,2,3};2.3 常用函数函数作用dq.push_back(x)尾插dq.push_front(x)头插dq.pop_back()尾删dq.pop_front()头删dq.back()访问队尾dq.front()访问队头dq.size()元素个数dq.empty()是否为空dq.clear()清空dq[i]随机访问2.4 示例dequeintdq;dq.push_back(1);dq.push_front(2);coutdq.front()endl;coutdq.back()endl;2.5 易错点和vector一样访问前要确保非空虽然支持随机访问但一般更常用在队头队尾操作3.stack3.1 特点栈后进先出只能访问栈顶元素默认底层一般是deque3.2 常用定义stackintst;3.3 常用函数函数作用st.push(x)入栈st.pop()出栈st.top()访问栈顶st.size()元素个数st.empty()是否为空3.4 示例stackintst;st.push(10);st.push(20);coutst.top()endl;// 20st.pop();3.5 易错点pop()没有返回值想取出栈顶元素要先top()再pop()4.queue4.1 特点队列先进先出只能访问队头和队尾常用于 BFS4.2 常用定义queueintq;4.3 常用函数函数作用q.push(x)入队q.pop()出队q.front()访问队头q.back()访问队尾q.size()元素个数q.empty()是否为空4.4 示例queueintq;q.push(1);q.push(2);coutq.front()endl;// 1q.pop();4.5 易错点pop()也没有返回值访问front()和back()前要保证队列非空5.priority_queue5.1 特点优先队列本质是堆默认是大根堆不能像普通容器那样遍历5.2 常用定义priority_queueintpq;// 大根堆小根堆写法priority_queueint,vectorint,greaterintpq;5.3 常用函数函数作用pq.push(x)插入元素pq.pop()删除堆顶pq.top()访问堆顶pq.size()元素个数pq.empty()是否为空5.4 示例priority_queueintpq;pq.push(3);pq.push(10);pq.push(5);coutpq.top()endl;// 10pq.pop();5.5 易错点默认是大根堆不是小根堆pop()不返回堆顶元素如果要取最小值记得用greaterint6.set6.1 特点内部元素自动有序元素不重复底层一般是红黑树查找、插入、删除通常是O(log n)6.2 常用定义setints;setints{3,1,2};6.3 常用函数函数作用s.insert(x)插入元素s.erase(x)删除值为x的元素s.find(x)查找元素返回迭代器s.count(x)是否存在结果是0或1s.size()元素个数s.empty()是否为空s.clear()清空s.begin()指向最小元素s.end()尾后迭代器s.lower_bound(x)第一个大于等于x的位置s.upper_bound(x)第一个大于x的位置6.4 示例setints;s.insert(3);s.insert(1);s.insert(3);// 重复元素不会插入if(s.count(1)){coutfoundendl;}for(intx:s){coutx ;}6.5 易错点set中元素不能通过迭代器直接修改元素会自动排序不会保持插入顺序7.unordered_set7.1 特点无序集合元素不重复底层是哈希表平均查找、插入、删除是O(1)7.2 常用定义unordered_setintus;7.3 常用函数函数作用us.insert(x)插入us.erase(x)删除us.find(x)查找us.count(x)判断是否存在us.size()元素个数us.empty()是否为空us.clear()清空7.4 示例unordered_setintus;us.insert(10);us.insert(20);if(us.find(10)!us.end()){coutyesendl;}7.5 易错点元素是无序的最坏情况下复杂度可能退化不能使用lower_bound()、upper_bound()8.map8.1 特点键值对容器按 key 自动升序排列key 不重复底层一般是红黑树8.2 常用定义mapstring,intmp;8.3 常用函数函数作用mp[key]访问或插入 key 对应的值mp.insert({key, value})插入键值对mp.erase(key)删除 keymp.find(key)查找 keymp.count(key)判断 key 是否存在mp.size()元素个数mp.empty()是否为空mp.clear()清空mp.begin()首元素迭代器mp.lower_bound(key)第一个大于等于 key 的位置mp.upper_bound(key)第一个大于 key 的位置8.4 示例mapstring,intmp;mp[alice]95;mp[bob]88;coutmp[alice]endl;for(auto[k,v]:mp){coutk vendl;}8.5 易错点mp[key]如果 key 不存在会自动创建如果只是判断是否存在优先用find()或count()9.unordered_map9.1 特点无序键值对容器key 不重复底层是哈希表平均复杂度接近O(1)9.2 常用定义unordered_mapstring,intump;9.3 常用函数函数作用ump[key]访问或插入ump.insert({key, value})插入ump.erase(key)删除ump.find(key)查找ump.count(key)判断是否存在ump.size()元素个数ump.empty()是否为空ump.clear()清空9.4 示例unordered_mapstring,intump;ump[cat]2;ump[dog]3;if(ump.count(cat)){coutump[cat]endl;}9.5 易错点无序遍历结果不固定ump[key]也会自动创建新 key自定义类型做 key 时通常需要自定义哈希函数10. 常用遍历方式总结10.1 下标遍历适用于vector、dequefor(inti0;i(int)v.size();i){coutv[i] ;}10.2 范围for适用于大多数容器for(intx:v){coutx ;}10.3 迭代器遍历for(autoits.begin();it!s.end();it){cout*it ;}10.4 遍历mapfor(autoitmp.begin();it!mp.end();it){coutit-first it-secondendl;}for(auto[k,v]:mp){coutk vendl;}11. 常见使用场景速记容器适合场景vector最常用存一组数据支持随机访问deque需要双端操作stack括号匹配、单调栈、DFS 辅助queueBFS、层序遍历priority_queue堆、Top K、最值维护set去重 有序unordered_set快速去重、快速查找map统计映射关系且需要有序unordered_map计数、哈希映射、频率统计12. 学 STL 时最值得记住的几点12.1 先记“是否有序”set、map是有序的unordered_set、unordered_map是无序的12.2 先记“是否允许重复”set、unordered_set不允许重复map、unordered_map的 key 不允许重复12.3 先记“是否支持下标”vector、deque支持下标set、map不支持像数组那样按位置访问12.4 先记“默认堆类型”priority_queue默认是大根堆12.5 先记“pop()是否返回值”stack、queue、priority_queue的pop()都没有返回值13. 刷题最常用模板13.1vector排序vectorintv{4,2,5,1};sort(v.begin(),v.end());13.2unordered_map计数unordered_mapint,intcnt;for(intx:nums){cnt[x];}13.3set去重setints(nums.begin(),nums.end());13.4 小根堆priority_queueint,vectorint,greaterintpq;13.5 队列 BFSqueueintq;q.push(start);while(!q.empty()){intxq.front();q.pop();}

相关文章:

C++ STL常用函数一览表(快速记忆版本)

C STL 常用数据结构与函数整理 这份笔记按常见 STL 容器分类整理&#xff0c;适合在刷题和复习时快速查阅。1. vector 1.1 特点 底层是动态数组支持随机访问尾部插入、删除效率高中间插入、删除效率低 1.2 常用定义 vector<int> v; vector<int> v(5); /…...

不止是省9.9刀:解锁特斯拉Model 3的‘行驶中保持WiFi’功能,打造家庭移动娱乐中心

不止是省9.9刀&#xff1a;解锁特斯拉Model 3的‘行驶中保持WiFi’功能&#xff0c;打造家庭移动娱乐中心 特斯拉Model 3的车载4G网络虽然方便&#xff0c;但在信号不佳的区域或需要大流量娱乐的场景下&#xff0c;往往显得力不从心。更让许多家庭用户纠结的是&#xff0c;高级…...

STM32 HAL库驱动中景园0.96寸OLED(SSD1306)避坑指南:从IIC地址到GRAM刷新的完整流程

STM32 HAL库驱动中景园0.96寸OLED&#xff08;SSD1306&#xff09;全流程实战解析 在嵌入式开发中&#xff0c;OLED显示屏因其高对比度、低功耗和快速响应等特性&#xff0c;成为许多项目的首选显示方案。本文将深入探讨如何基于STM32 HAL库高效驱动中景园0.96寸OLED&#xff0…...

Kimi、DeepSeek、阶跃星辰三天融资超百亿,中国AI的“中场战事”刚刚开始

过去一周&#xff0c;融资狂潮、智能体大军与算力基建三大赛道同时开火&#xff0c;天平正在加速倾斜。大模型调用量&#xff1a;连续三周&#xff0c;中国AI压住美国5月18日&#xff0c;根据OpenRouter最新数据&#xff0c;2026年5月11日至17日当周&#xff0c;全球AI大模型总…...

未来5年,程序员换工作,请做好降薪准备!

最近看到不少大厂的去年和一季度财报都公布了&#xff0c;不少人年终奖也发的差不多了&#xff0c;再加上金三银四也过了有一段时间了。按理来说&#xff0c;该晋升的晋升&#xff0c;该跳槽的跳槽&#xff0c;该加薪的加薪&#xff0c;基本尘埃落定&#xff0c;我公号后台应该…...

API 监控告警系统

LogMonitor - API监控告警系统 基于Python的智能API监控系统&#xff0c;集成Splunk日志分析和钉钉告警&#xff0c;支持多种API类型的实时监控和趋势分析。 代码地址 https://github.com/junbingliu007/log_monitor 功能特性 多API类型监控&#xff1a;支持多种API类型智…...

Midjourney × CLO 3D无缝协同方案(工业级打版前必读):实现AI草图→虚拟缝合→力学模拟零损转换

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney CLO 3D无缝协同方案&#xff08;工业级打版前必读&#xff09;&#xff1a;实现AI草图→虚拟缝合→力学模拟零损转换 在高精度服装数字样衣开发流程中&#xff0c;Midjourney生成的创意草图常因缺…...

企业级RAG系统数据可信生死线:Perplexity验证功能内测权限仅剩最后17个——附白名单申请通道

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;企业级RAG系统数据可信生死线&#xff1a;Perplexity验证功能内测权限仅剩最后17个——附白名单申请通道 在企业级RAG&#xff08;Retrieval-Augmented Generation&#xff09;系统中&#xff0c;检索结果与生…...

有这5个迹象,说明你公司内斗很严重!

见字如面&#xff0c;我是军哥&#xff01;昨天&#xff0c;一位读者小王给我留言。他在某大厂担任项目经理&#xff0c;最近工作推进得很艰难。同一件事开了好几次会&#xff0c;领导就是不拍板。跨部门协作费力不讨好&#xff0c;谁都不愿负责&#xff0c;项目卡在那里没有进…...

光纤干涉条纹投射导向的动态三维形貌测量技术【附程序】

✨ 长期致力于条纹投射轮廓术、光纤干涉条纹投射、正弦相位调制、任意步距相移相位解调、系统标定研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;基于…...

Dify系列课程 - 5.Ollama:轻松驾驭本地大语言模型(在 Windows 上安装 Ollama 并部署 DeepSeek 大模型)

Ollama 安装Deepseek大模型 Ollama 大模型安装完成...

勒索病毒防线与数据恢复能力:四家云厂商安全水位线横向测评

对于制造业等行业的内部核心业务&#xff08;MES、WMS、ERP、HIS等&#xff09;上云&#xff0c;深信服托管云凭借其“资源专属全栈托管主动服务”三位一体的模式&#xff0c;在业务连续性保障、就近部署低时延以及贴身服务响应等方面&#xff0c;表现出比主流公有云方案更强的…...

序列近似整数规划导向的通用高性能离散变量拓扑优化新方法【附算法】

✨ 长期致力于拓扑优化、整数规划、序列近似规划、信赖域、拓扑不变量研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;正则松弛算法求解大规模可分离整…...

脉冲神经网络与测试时自适应技术解析

1. 脉冲神经网络与测试时自适应概述脉冲神经网络&#xff08;Spiking Neural Networks, SNNs&#xff09;作为第三代神经网络模型&#xff0c;其核心在于模拟生物神经元的脉冲发放机制。与传统人工神经网络不同&#xff0c;SNN中的神经元仅在膜电位达到特定阈值时才产生脉冲信号…...

类型转换:隐式、显式与类型提升

在Java开发中&#xff0c;数据类型转换是最基础也最容易被忽略的核心操作——从简单的变量赋值、数字运算&#xff0c;到复杂的方法传参、泛型适配、多态转型、序列化&#xff0c;几乎每一行代码都隐含着类型转换的逻辑。很多同学只停留在“会用”的层面&#xff1a;知道int转l…...

KING大咖直播|驯服时间洪流:电科金仓KES时序版“硬核”解码

设备互联、生产监控、交易行情……时序数据正以指数级速度狂奔&#xff0c;传统数据库频频掉队&#xff1f;电科金仓KES时序版&#xff0c;用“一库多模”破题&#xff1a;千万级并发写入稳如磐石、20倍压缩比瘦身立现、高密度写入与实时分析同框——这是国产时序数据库交出的一…...

磁性衬底导向的宽带超材料吸波体的吸波机理及设计方案【附代码】

✨ 长期致力于磁性材料、超材料吸波体、宽频带微波吸收、吸波机理、智能算法研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;对称模型分析多层反射干涉…...

电铲自主行走多耦合行为及轨迹控制技术【附代码】

✨ 长期致力于电铲、自主行走、多耦合行为、离散元法、反演滑模控制、轨迹控制研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;机电-离散元多体耦合动…...

夹矸煤层采煤机螺旋滚筒工作性能优化【附代码】

✨ 长期致力于夹矸煤层、螺旋滚筒、工作性能、可靠性、多目标优化研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;离散元-有限元耦合截割模型与煤岩参…...

从音箱分频到电源净化:聊聊RLC低通滤波器那些意想不到的实用场景

从音箱分频到电源净化&#xff1a;聊聊RLC低通滤波器那些意想不到的实用场景 在电子工程的世界里&#xff0c;RLC低通滤波器就像一位低调的幕后英雄。它不像微处理器那样引人注目&#xff0c;也不像显示屏那样直观可见&#xff0c;却在无数电子设备中默默发挥着关键作用。从你每…...

盒子定位(Mac版)

Mac版写HTML与Windows版不同&#xff0c;但思路不变。首先&#xff0c;创建HTML文件&#xff0c; 通过快捷键commandspace 搜索“文本编辑”App。接下来&#xff0c;点击新建文稿将文稿重命名&#xff0c;改为html后缀结尾&#xff0c;如下图所示通过选择VScode的打开方式&…...

抖音视频批量下载神器:3分钟学会无水印批量下载技巧

抖音视频批量下载神器&#xff1a;3分钟学会无水印批量下载技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

构建AI应用时如何借助Taotoken实现模型的灵活选型与降级

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 构建AI应用时如何借助Taotoken实现模型的灵活选型与降级 对于正在开发AI应用的产品团队而言&#xff0c;模型服务的稳定性和成本效…...

顶尖销售都在读什么?这三本书揭示理解客户的奥秘

优秀销售真正厉害的地方&#xff0c;不是把产品硬推给别人&#xff0c;而是能够理解客户真正的需求&#xff0c;并让客户相信&#xff1a;你是在帮他解决问题&#xff0c;而不是单纯想把东西卖出去。 而要真正提升销售能力&#xff0c;读几本值得反复看的经典书籍&#xff0c;…...

用51单片机和HC-SR04超声波模块,手把手教你做个倒车防撞提醒器(附完整代码和立创EDA原理图)

51单片机与超声波模块实战&#xff1a;打造高精度倒车防撞系统 引言 在智能交通与汽车电子领域&#xff0c;距离检测技术扮演着越来越重要的角色。对于电子爱好者而言&#xff0c;掌握超声波测距原理并实现实际应用&#xff0c;不仅能提升硬件开发能力&#xff0c;还能为日常生…...

别再死记硬背公式了!用‘推磨小矮人’和‘磁极跳舞’理解PMSM的电角度与机械角度

用“推磨小矮人”和“磁极跳舞”轻松掌握PMSM角度转换 电机控制领域的初学者常被永磁同步电机&#xff08;PMSM&#xff09;中电角度与机械角度的关系困扰。传统教材中“电角度极对数机械角度”的公式虽然简洁&#xff0c;却缺乏直观的物理图像支撑。本文将用两个生活化的比喻…...

DeepSeek企业级部署GPU清单(2024Q3权威更新):仅3款消费级卡达标,87%私有云环境需重构PCIe拓扑

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek企业级GPU资源需求的演进逻辑与基准定义 随着DeepSeek系列大模型从开源轻量级版本&#xff08;如DeepSeek-Coder-1.3B&#xff09;向千亿参数级企业级推理与微调平台&#xff08;如DeepSeek-VL…...

RT-Thread下lwIP协议栈内存优化实战:从300KB降至120KB

1. 项目概述与核心价值最近在做一个基于RT-Thread的物联网网关项目&#xff0c;硬件资源是STM32F407&#xff0c;带1MB的RAM。项目需要同时处理4路TCP长连接和若干UDP广播包&#xff0c;原本以为内存绰绰有余&#xff0c;结果一上电跑起来&#xff0c;系统内存占用直接飙到了90…...

Midjourney V6镜头指令全解密:从f/1.4浅景深到anamorphic变形宽银幕,9类专业镜头词+57组有效prompt组合

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Midjourney V6镜头指令的核心演进与底层逻辑 Midjourney V6 对镜头语言的建模实现了从“风格提示词拼接”到“光学语义解析”的范式跃迁。其底层不再依赖传统摄影术语的文本匹配&#xff0c;而是通过多模态联…...

CentOS 8 Stream换源踩坑记:从阿里云到清华源,哪个更适合你的服务器?

CentOS 8 Stream镜像源深度评测&#xff1a;阿里云、清华源与网易163实战对比 当你在凌晨三点被服务器告警吵醒&#xff0c;发现安全补丁因下载超时无法安装时&#xff0c;一个可靠的软件源就成了救命稻草。作为国内使用最广泛的RHEL系社区发行版&#xff0c;CentOS 8 Stream的…...