logo头像
Snippet 博客主题

考研算法

第一章

成绩排序2一题中,使用到了运算符重载以及头文件“algorithm”中的sort函数,相关代码段如下

1
2
3
4
5
6
bool operator<(const Person& t) const{//运算符重载
if(score!=t.score) return score<t.score;//如果分数不相同,返回结果
return num< t.num;//如果分数相同,返回学号更小的一个
}

sort(q,q+n);//对数组进行排序

p.s const关键字的作用为

​ 指定一个语义约束,如果函数或其他调用中某个值确实一直不变,使用const

运算符重载

重载运算符,是为了在面向对象中更方便的对各类成员变量进行

  1. 一元运算,如基本的-取负值

  2. 二元运算,如+,-,*,/

  3. 关系运算符重载,如<,>

  4. 输入输出运算符重载,如<<,>>

1
2
3
4
5
6
7
8
9
10
11
12
friend ostream &operator<<( ostream &output, 
const Distance &D )
{
output << "F : " << D.feet << " I : " << D.inches;
return output;
}//输出运算符重载

friend istream &operator>>( istream &input, Distance &D )//输入运算符重载
{
input >> D.feet >> D.inches;
return input;
}//友元函数有权限访问类中(private)以及(protected)的变量
  1. 对于数组,我们甚至可以进行下标运算符[]重载
1
2
3
4
5
6
7
8
9
10
int& operator[](int i)
{
if( i >= SIZE )
{
cout << "索引超过最大值" <<endl;
// 返回第一个元素
return arr[0];
}
return arr[i];
}

sort函数

​ sort()函数是基于快速排序实现的,默认为升序排序,且是不稳定的排序函数