C++ STL
unordered_set
侧重于元素的快速获取,没有了upper_bound,lower_bound函数
#include<iostream>
#include<unordered_set>
#include<algorithm>
using namespace std;
int main(){
unordered_set<int> myset;
myset.insert(3);
myset.insert(5);
myset.insert(3);
cout<<myset.size()<<endl;
myset.erase(3);
if(myset.find(3)==myset.end()){
cout<<"NO 3"<<endl;
}
return 0;
}
应用
今日头条笔试题1——在n个元素的数组中,找到差值为k的数字对去重后的个数
#include<iostream>
#include<cstdio>
#include<unordered_set>
#include<algorithm>
using namespace std;
const int MA=1e5+5;
unordered_set<int>myset;
int main(){
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++){
int x;
cin>>x;
myset.insert(x);
}
int sum=0;
for(int x:myset){
if(myset.find(x+k)!=myset.end()){
sum++;
}
}
cout<<sum<<endl;
return 0;
}
unordered_map
priority_queue 优先队列
头文件:#include
基本操作
empty() 判断队列是否为空
pop() 删除队顶元素(删除第一个元素)
push() 加入元素
size() 返回元素个数
top() 返回队顶元素
声明方式
1.普通方式
priority queue
2.顺序出队
priority queue<int,vector
3.设置优先级
//eg:
struct node{
int x,y;
bool operator < (const node &b)const{
return x<b.x;//x大的优先级高
}
}x1,x2,x3;
相关博客:优先队列