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

STL常用功能

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.gsyq.cn/news/60660.html

相关文章:

  • Rust 零拷贝技术:从所有权到专业的系统调用的性能优化之道
  • 2025年下半年奖牌/水晶奖杯/奖杯定制/定制厂家口碑推荐榜
  • 低代码平台选型指南:企业避坑指南与核心评估维度
  • IMX6D的LVDS调试
  • 题解:CF1746D Paths on the Tree
  • 解决Windows窗口在屏幕外的问题
  • ai论文工具推荐:助力学术创作效率提升的实用工具
  • 2025年国际发表必备!多语言AI论文写作工具TOP 3 深度测评
  • 外观检测设备有哪些?制造业主流方案及应用解析
  • 光学膜外观缺陷检测设备:技术创新与行业应用动态
  • 睡眠不好吃的益生菌选哪家好?热门产品解析
  • 热力图数据可视化,调研
  • 元聚变科技集团估值:AI与数据要素驱动的企业价值解析
  • 有助于睡眠的益生菌推荐几款,这些口碑品牌值得关注
  • 苏州刑事律所推荐:如何选择专业可靠的法律服务机构
  • 上海值得投资的AI企业:聚焦技术创新与产业赋能潜力
  • 上海有哪些AI企业值得投资?行业潜力机构盘点
  • 2025 年成都蜂窝铝扣板生产厂家口碑推荐榜出炉
  • 2025年行业内四川噪声治理厂家口碑最好的厂家榜
  • 2025年11月山东石材雕刻机/墓碑雕刻机/绳锯机综合测评TOP10
  • 2025 卫浴健康革命!全链路杀菌马桶榜单,99% 家庭都需要
  • 2025年质量好的西安净化板实力厂家推荐排行榜
  • 2025年盐雾试验箱厂家口碑评分排行榜,淋雨试验箱/恒温恒湿试验箱/恒温恒湿房/光伏组件湿演式验箱/高低温试验箱盐雾试验箱厂商推荐排行
  • 中国私有云格局2025:Top 5 Private Cloud Providers Hybrid Cloud Trends
  • 【中山大学主办,IEEE出版】第五届通信技术与信息科技国际学术会议(ICCTIT 2025)
  • 创建随机数组
  • luogu P2015 二叉苹果树
  • 2025年专业测评:快速温变试验箱十佳产品,盐水喷雾试验箱及各种老化房/恒温恒湿房/淋雨试验箱/高低温试验箱快速温变试验箱生产厂家排行
  • 伙伴算法内存管理
  • 智慧高速新篇章:国标GB28181算法算力平台EasyGBS在高速公路全域监控中的应用实践