未实现比较函数时报错
In template: invalid operands to binary expression ('const complex' and 'const complex')
解决方案:set在插入时自动调用类中的<运算符重载进行排序,只需要在类中实现小于符号运算符重载即可
#include<iostream>
#include<set>
using namespace std;
class complex
{
public:
double _a;
double _b;
public:
complex()
:_a(0),
_b(0)
{}
complex(double a, double b)
:_a(a),
_b(b)
{}
bool operator<(const complex& x)const
{
return _a < x._a;
}
void print() const
{
if(_b == 0)
cout<<_a<<endl;
else if(_a == 0)
cout<<_b<<'i'<<endl;
else
cout<<_a<<" + "<<_b<<'i'<<endl;
}
};
int main()
{
set<complex> s;
s.insert({1.1,2.2});
s.insert({2.5,45.4});
s.insert({-1.1,0});
s.insert({-4.4,-2});
s.insert({0,2.5});
for(const complex& e : s)
e.print();
return 0;
}