(Day2)常用stl
- vector:
用法:
sort(ve.begin(),ve.end());//排序
ve.push_back();//末尾插入
ve.pop_back();//末尾删除
ve.insert(v.begin(),x);//在最头插入x
ve.insert(v.begin()+2,x);//在第二个元素前插入x
ve.erase(ve.begin());//里面是迭代器,删除相应的
- string
getline(cin,s);//整行读入
s.insert(pos,s1);
s.erase(pos,num);
s.substr(pos,num);
s1.find(s2,pos);
- pair
pair<>//C艹内置的二元组 用make_pair函数创建
- queue
priority_queue<int>qu;//优先队列
priority_queue<pair< , >>qu;
priority_queue<int,vector<int>,greater<int> >qu;
qu.back();//取队尾元素
- 双端队列deque
#include<dequeue>//头文件
deque<int>qu;
qu.front();
qu.back();
qu.push_back();
qu.push_front();
qu.pop_front();
qu.pop_back();
- set
s.find(x);//找到一样的数字,并返回地址
s.lower_bound(x);//<x的元素
s.upper_bound(x);//>=x的元素
s.erase(it);//删除迭代器指向的元素
s.erase(x);//删除等于x的元素
s.count(x);//返回等于x的个数
s.erase(s.find(2),s.find(4));//删除区间
- map
mp.find(x);//查找key为x的元素
mp.insert(make_pair(2,3))
map<char,int>::iterator it;//迭代器
不去重
声明时使用multi+set/map声明不去重set/map,使用方法与set/map类似
multiset<int>s;
multiset<int>::iterator it;
- bitset
#include<bitset>
bitset<10000>s;//10000位的二进制数
s[k]取第k位
s.count();//数有几位
s.any();//只要有一个1就返回true
s.none();//必须全为0才返回true
s.set();//所有位都变为1
s.flip();//所有位置取反
//前几个函数如果里面加上x,就是表示只作用于第几位
- sort
struct node
{
int x,y;
};
vector<node>ve;
bool operator<(const node &a,const node &b)
{
return a.x<b.x;
}
sort(ve.begin(),ve.end());
- 二分
upper_bound();//>=x
lower_bound();//<x
- 其他
#incude<algorithm>
reverse(a.begin(),a.end());//翻转
reverse(a+1,a+1+n);
int m=unique(a.begin(),a.end())-a.begin();//返回个
next_permutation(a+1,a+1+n);
- 查找
lower_bound(first,last,value);
upper_bound(first,last,value);
在有序数组[first,last)中查找第一个
不大于/不小于val的元素地址
题目:洛谷P1168
https://www.luogu.com.cn/problem/P1168
题目大意:
输出前1,前3,前5....数的中位数
思路:
开始想着用优先队列,但是优先队列好像不好把中间的数输出,然后就学到了ve的另一个用法,把数插入到中间去,用二分返回插入的位置,然后直接把需要的数输出就行了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
vector<int>ve;
int main()
{
int n;
scanf("%d",&n);
int x;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
ve.insert(upper_bound(ve.begin(),ve.end(),x),x);
if(i%2==1)cout<<ve[(i-1)/2]<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~