自定义类型
class Vector3
{
public:
double p1;
double p2;
double p3;
Vector3()
{
}
Vector3(double a, double b, double c)
{
p1 = a;
p2 = b;
p3 = c;
}
bool operator==(const Vector3& t1)const {
return ((this->p1 == t1.p1) && (this->p2 == t1.p2 )&& (this->p3 == t1.p3));
}
bool operator!=(const Vector3 & t1)const {
return (p1 != t1.p1 or p2 != t1.p2 or p3 != t1.p3);
}
bool operator<(const Vector3& t1)const {
return p1 + p2 * p2 + p3 * p3 * p3 < t1.p1 + t1.p2 * t1.p2 + t1.p3 * t1.p3 * t1.p3;
}
};
使用如下代码:
Vector3 v1(-42,0,-49);
Vector3 v2(-41,0,-42);
multiset<Vector3> ss;
ss.insert(v1);
auto pos = ss.find(v2);
find是根据重载的小于号运算符来找的,如果小于号运算符只是单纯的return p1<t1.p1,那找到的pos就不是end了。