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的主要内容,如果未能解决你的问题,请参考以下文章

STL之vector

STL 之 list源码自行实现(iterator)

STL之complex

UVa156 Ananagrams (STL)

STL重载运算符

UVA 230 Borrowers (STL 行读入的处理 重载小于号)