标签:竞赛 const temp point STL queue pq 应用 operator
STL在竞赛中的应用
概论
vector
vector 是不定长数组容器。其数组长度的扩增策略是每次乘 2
其操作方式如下:
list
链表容器
string
queue & deque
stack
priority_queue
优先队列,通过堆来实现,能够保证队首元素为最大(小)值,支持插入,删除操作(\(O(log(n))\)) ,也支持取队首元素、弹出队首元素(\(O(1)\))
使用方法如下:
#include<queue>
#include<iostream>
using namespace std;
struct point{
int x,y,z;
const bool operator <(const point &temp)const{
if(x!=temp.x) return x<temp.x;
if(y!=temp.y) return y<temp.y;
if(z!=temp.z) return z<temp.z;
return false;
}
const bool operator >(const point &temp)const{
return temp<*this;
}
void output(){
cout<<x<<" "<<y<<" "<<z<<endl;
}
};
int main(){
/*声明*/
priority_queue<point> pq_0;
/*大根堆构造*/
priority_queue<point,vector<point>,greater<point>> pq_1;//小根堆,重载>方法
priority_queue<point,vector<point>,less<point>> pq_2;//大根堆,重载<方法
/*访问*/
if(!pq_0.empty()){
point temp=pq_0.top();
temp.output();
}
/*清空*/
while(pq_0.empty()) pq_0.empty();
}
各种比较运算符重载方法(通过\(<\)延伸):
bool operator <(const point &temp)const{
if(x!=temp.x) return x<temp.x;
if(y!=temp.y) return y<temp.y;
if(z!=temp.z) return z<temp.z;
return false;
}
bool operator >(const point &temp)const{
return temp<*this;
}
bool operator <=(const point &temp)const{
return !(temp>*this);
}
bool operator >=(const point &temp)const{
return !(*this<temp);
}
bool operator ==(const point &temp)const{
return (*this<=temp) && (*this>=temp);
}
Lambda
algorithm
map
set
multimap/multiset
unodered_map/set
标签:竞赛,const,temp,point,STL,queue,pq,应用,operator 来源: https://www.cnblogs.com/sora-13/p/15086684.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。