STL常用功能

news/2025/11/25 19:19:51/文章来源:https://www.cnblogs.com/lalalac/p/19265855

pair

定义:pair<变量类型1,变量类型2>a(1-值,2-值)。
a = make_pair(1-值,2-值);
访问:1-a.first  2-a.second
比较:a < b -> ( a.first < b.first || a.first == b.first && a.second < b.second; )
可以嵌套:pair<int,pair<int,int>>b(1, pair<int,int>(2,3));

array

定义:array<int, 5(数组大小)>a; (等于int a[5])
auto [p, q, r] = b; // p = b[0], q = b[1], r = b[2]

stack(栈) 先进后出

定义:stack<变量类型>s;
入栈:s.push(值);
访问栈顶元素:s.top();
出栈(删除栈顶元素):s.pop();
栈的长度:s.size();
栈为空的时候返回true:s.empty();

queue(队列) 先进先出
用法:bfs

定义:queue<变量类型>q;
入队:q.push(值);
出队:q.pop();
访问第一个元素:q.front();
访问最后一个元素:q.back();
队列为空的时候返回true:q.empty();

priority_queue(优先队列)
用法:大根堆top为最大值,小根堆top为最小值。
默认大根堆。

定义:priority_queue<变量类型>v;
v.push(值);
v.top();

小根堆:1.给每个值取反(x->-x)如图所示:
(大根堆)

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;priority_queue<int> v;int main() {v.push(3);v.push(1);v.push(2);while (!v.empty()) {int x = v.top();printf("%d\n", x);v.pop();}
}
-> (小根堆)
点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;priority_queue<int> v;int main() {v.push(-3);v.push(-1);v.push(-2);while (!v.empty()) {int x = v.top();printf("%d\n", -x);v.pop();}
}

deque(双端队列)
用法:可以在两端进行插入删除操作

定义:deque<int>v;
头部插入:v.push_front(1);
头部删除:v.pop_front();
尾部插入:v.push_back(2);
尾部删除:v.pop_back();
可以按照下标访问,例:v[];

vector

初始化:
vector<int>v;
vector<int>v(3,100);(大小为1,每个值为100)
vector<int>v{1,2,3};(v[0] = 1,v[1] = 2,v[2] = 3;)
从最后放入元素:
v.push_back(1);
遍历:
for(auto x: v){printf("%d ",x);
}
x为临时变量,改变x不会改变v的值。
使用&x=引用v中对应变量,v的值会随着x改变。
预处理大小:v.risize(100);
大小:v.size();(当v是空的时,v转为无符号类型,v.size()大小为2^32,为了避免算大小应该用(int)v.size();)
清空:v.clear();
迭代器:指向元素的东西。auto it = v.begin();//指向第一个元素。
指向下一个元素:
it ++;
*it += 1;
在第一个位置插入2:
v.insert(v.begin() + 1, 2);
删除第二个位置的元素:
v.erase(v.begin + 2)。
排序:
#include<algorithm>
sort(v.begin(),v.end());
返回大于等于x的第一个位置:
auto it1 = lower_bound(v.begin(), v.end(), x);
返回大于x的第一个位置:
auto it2 = upper_bound(v.begin(), v.end(), x);
x在v中的元素个数 = it2 - it1。
vector之间比较按照字典序。

set
image

初始化:
set<T>s;
v中所有元素存到s中set<T>s(v.begin(),v.end());
删除元素x:
s.erase(x);
遍历:
for (auto it = s.begin(); it != s.end(); it++) {printf("%d\n", *it);
}
查询x是否存在:
s.count(x);(返回0 or 1)
s.find(x);(返回迭代器,找不到返回s.end())
返回大于等于x的第一个元素迭代器:
auto it1 = lower_bound(x);
it的前一个元素:
prev(it);
--it;
插入:s.insert(x);

map
image

初始化:
map<T1,T2>v;
T1:下标类型
T2:值的类型
访问:
第一个:x.first      第二个:x.second 
定义:
v["abc"] = "def";
遍历:
for (auto x : s) {cout << x.first << " : " << x.second << endl;
}
当访问一个不存在的下标x,会新建一个使v[x] = 0;所以在判断一个元素是否等于0,则
if(v.count(x)&&v[x] == 0){return true;
}
删除:
v.erase();

multiset

和set相似,不过不会去重
初始化:
multiset<int>s;
当s.erase(x)时,会将s中所有的x都删除
当删除一个时,可用迭代器:
s.erade(s.find(x));

string
image

字符串转int:
string s = "123";
int a = stoi(s);
同理转long long:
long long a = stoll(s);
int转字符串:
int a = 123;
string s = to_string(a);
字符串拼接:
string s1 = "123";
s1 += "456";
则现在s1 = "123456";
把x放在s最后:s.push_back(x);
把从位置l到位置r的字符串替换为字符串z:
s.replace(l,r,z);
把字符串类型转为char的字符串类型:
s.c_str();
从pos开始找t,找不到返回string::npos:
s.find(t,pos);
从pos开始,截取长度为len的字串:
string t = s.substr(pos,len);
从pos开始截取到末尾:
string t = s.substr(pos);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/976399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025/11/25-Xs new location transparency feature unleashes questions about origins of MAGA accounts

2025/11/25-Xs new location transparency feature unleashes questions about origins of MAGA accountsXs new location transparency feature unleashes questions about origins of MAGA accounts p { line-height…

实用指南:【底层机制】深入浅出地、系统地剖析 Appium 的原理

实用指南:【底层机制】深入浅出地、系统地剖析 Appium 的原理2025-11-25 19:08 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

Go 语言未来会取代 Java 吗?

Go语言未来不太可能全面取代Java。虽然Go语言在某些领域具有显著优势,但Java也有其不可替代的特点,两者更可能是共存互补的关系。具体分析如下: 技术特性方面Go语言:语法简洁,原生支持Goroutine和Channel,并发性…

玄机钓鱼邮件分析_2025/11/25

玄机钓鱼邮件分析_2025/11/25玄机钓鱼邮件分析 题目要求flag位置 黑客源IP 将解压出来的.eml用记事本分析,发现存在的黑客IP信息flag:flag{121.204.224.15} 黑客木马程序控制端 将黑客的恶意文件放入在线沙箱中分析,…

容错量子电路大幅降低资源开销

研究人员提出采用冗余辅助量子位编码的新方法,将实现T门所需的辅助量子位数量降低至少一个数量级,通过物理层操作直接制备魔术态,大幅减少量子纠错资源开销。容错量子电路大幅降低资源开销 量子计算作为新兴技术,有…

详细介绍:【C基本功】类型转换的奇幻漂流

详细介绍:【C基本功】类型转换的奇幻漂流pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

点灯笔记:CW32L010

点灯笔记:CW32L010 有天在技术群里看到一帮大牛在聊CW32L010,就顺手搜了一下:“ARM Cortex-M0+ 32 位低功耗微控制器,64K 字节FLASH,4K 字节RAM”,价格不到五毛钱,这不是赤裸裸的勾引么?图片那就玩儿?画板…

Rust 零拷贝技术:从所有权到专业的系统调用的性能优化之道

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

服务器代码执行三板斧

conda activate evo2 cd ~/evo2_contrast_enhanced/notebooks/clinvar/utils CUDA_VISIBLE_DEVICES=1,2 python evo2run.py根据需要修改 或者是nohup conda activate evo2 cd ~/evo2_contrast_enhanced/notebooks/clin…

过山车

visited的清空在递归外面 #include <bits/stdc++.h> using namespace std; vector<int>e[1005]; int m,n,k; int visited[505]; int match[105]; int dfs(int u) {for(auto v:e[u]){if(visited[v]) contin…

2025年下半年奖牌/水晶奖杯/奖杯定制/定制厂家口碑推荐榜

2025年下半年奖牌定制品牌口碑推荐榜 摘要 2025年下半年,奖牌定制行业随着体育赛事、企业活动和教育表彰的增多而持续发展,市场需求旺盛。本文提供一份奖牌定制品牌推荐前十榜单,排名基于综合口碑和用户反馈,不分先…

day07 spark sql - 详解

day07 spark sql - 详解2025-11-25 18:52 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

深入解析:系统架构设计师备考第57天——云原生架构相关技术

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年舒适操控的轮胎推荐:TOP5专业测评深度揭秘

2025年舒适操控的轮胎推荐:TOP5专业测评深度揭秘在消费升级与高端出行需求并行的当下,消费者对“舒适操控的轮胎推荐”早已不再满足于基础的安全与耐用,而是追求一种在静谧中不失精准、在柔顺中蕴含支撑的全场景高阶…

2025年宝马5系更换轮胎推荐:TOP5专业榜单权威推荐

2025年宝马5系更换轮胎推荐:TOP5专业榜单权威推荐在高端豪华轿车用户群体中,“宝马5系更换轮胎推荐”始终是热议焦点。宝马5系作为运动与豪华兼备的标杆车型,其轮胎替换不仅要延续原厂精密的底盘调校与后驱操控精髓…

低代码 vs 无代码:核心差异、适用场景与选型决策

在企业数字化工具选型中,“低代码” 与 “无代码” 常被混淆,两者都以 “快速开发” 为核心卖点,但在技术逻辑、能力边界和应用场景上存在本质区别。很多企业因缺乏清晰认知,盲目选择导致落地效果不佳 —— 要么用…

【ArcMap】将一个线图层的属性字段连接到另一个线图层

假设两条线差不多,只有字段完全不同,首先点击这个

低代码平台选型指南:企业避坑指南与核心评估维度

低代码平台不同厂商的产品在技术架构、功能特性、服务能力上差异显著,企业若缺乏科学的选型方法,极易陷入 “功能堆砌”“厂商宣传陷阱”,导致平台落地后无法适配业务需求,造成资源浪费。本文将从企业实际需求出发…

detectron2 框架安装

安装detectron2 detectron2安装有两种办法,一种直接通过pip下载 python -m pip install git+https://github.com/facebookresearch/detectron2.git 但对高版本的cuda大概率会报错,另一种办法是先git clone到本地再编…

IMX6D的LVDS调试

IMX6DxxYM: https://www.nxp.com.cn/products/i.MX6D LDB:LVDS Display Bridge LCD (Parallel LCD Interface) 并行接口:RGB接口,多条数据线并行传输 信号线多:通常包含 RGB数据线(16/18/24位)、时钟、行同步、场…