@[TOC](结构体排序和打印)
最近在学数据结构的时候,发现我以前知道的运算符重载有点忘记了,记录一下避免忘记。
如果对于运算符重载的表示不是很了解的,可以去B站黑马程序员的视频
或者也可以看这篇博客为什么operator<<左移运算符不能重载成员函数,而只能重载为友元函数?
typedef struct DNode
{
char a;
int b;
//小于运算符重载
bool operator<(const DNode &y)
{
return this->b<y.b;
}
//<<运算符重载
friend ostream& operator<<(ostream &os,const DNode &y){
os<<"a:"<<y.a<<" "<<"b:"<<y.b<<endl;
return os;
}
}DNode;
简单的选择排序算法,这个本不是我要说的重点。
void selectionSort(DNode arr[],int n)
{
for(int i=0;i<n;i++)
{
int minIndex=i;
for(int j=i+1;j<n;j++)
if(arr[j]<arr[minIndex])
minIndex=j;
swap(arr[i],arr[minIndex]);
}
}
如果我们没有使用小于运算符重载
的话,是不能直接对结构体进行大小比较
的;如果我们没有使用<<运算符重载
的话,是不能直接对结构体输出的
。
int main()
{
DNode p[3]={{'B',2},{'A',1},{'C',5}};
//小于运算符的使用
selectionSort(p,3);
for(int i=0;i<3;i++)
//<<运算符的使用
cout<<p[i];
cout<<endl;
return 0;
}
输出: