ACM之运算符重载结合STL
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM之运算符重载结合STL相关的知识,希望对你有一定的参考价值。
运算符重载在算法比赛中还是特别重要的。
我之前个人是喜欢写一个比较函数,这样很方便,但是只是适用于sort。
故这里举一个运算符重载的例子,当再次需要运算符重载的时候可以直接参考套用。
例子:给出 𝑛 个学生的姓名和分数,按分数降序排序,分数相同者按姓名字典序升序排序,输出排
名最靠前的人的姓名和分数。
#include<bits/stdc++.h>
using namespace std;
struct student
string name;
int score;
;
struct cmp //重载很容易弄混,建议理解为符号和真正的意思是相反的即可。
bool operator()(const student&a,const student&b) const
if(a.score==b.score) return a.name>b.name;
return a.score<b.score;//可以理解为a的值都大于后面的b的值 故是降序
;
priority_queue<student,vector<student>,cmp>q;
int main(void)
int n; cin>>n;
for(int i=0;i<n;i++)
string name;
int score; cin>>name>>score;
q.push(name,score);
cout<<endl;
while(q.size())
cout<<q.top().name<<" "<<q.top().score<<endl;
q.pop();
return 0;
以上是关于ACM之运算符重载结合STL的主要内容,如果未能解决你的问题,请参考以下文章