C++中结构体的运算符重载
- 方法一:结构体内部的重载
模板
bool operator 运算符 (const 结构体的名称 & 变量) const
{
return (运算符的实际运算);
}
具体代码
struct Data {
char c;
int first;
//这样就可以使用sort函数进行排序了,对象是结构体中的first元素
// 在使用bool operator 时,括号内只有一个参数,并且后面后const
bool operator < (const struct Data &o)const // 改成小于大于都行 // 这里的struct可以省略
{
return first > o.first;
}
/*
//在使用friend bool operator 时,括号内有两个参数,并且后面无const
friend bool operator < (const struct Data &a, const struct Data &b)
{
return a.first > b.first
}
*/
};
- 方法二:结构体外的重载
具体实现
struct Data
{
int u, w;
};
struct cmp
{
bool operator() (tmp &a, tmp &b)
{
return a.w > b.w;
}
};
最后是我自己写的一个demo实验
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 10;
struct Data {
char c;
int first;
bool operator < (const struct Data &o)const // 改成小于大于都行
{
return first > o.first;
}
}dg[N];
int main()
{
for (int i = 0; i < N; i ++ )
{
dg[i].first = i + 1;
dg[i].c = 'a' + i;
}
sort(dg, dg + N);
for (int i = 0; i < N; i ++ )
cout << dg[i].c << ' ' << dg[i].first << endl;
return 0;
}