【发布时间】:2014-07-08 22:54:33
【问题描述】:
class Point2D
{
friend ostream& operator<< (ostream&, const Point2D&);
protected:
int x; //can sort by x
int y; //can sort by y
double dist; //can sort by dist
public:
Point2D () {x=0; y=0;}
Point2D (int a, int b) {x=a; y=b;}
void setX (int);
void setY (int);
void setDist();
double getDist() const;
int getX ();
int getY ();
}
int main()
{
vector<Point2D> vect;
sort (vect.begin(), vect.end());
//Print all vector elements
for (int x=0; x<vect.size(); x++)
cout << vect[x] << endl;
}
我正在尝试使用sort 对对象向量进行排序。
但是当我在上面运行我的代码时,我得到很多重复的错误说:
instantiated from here - sort (vect.begin(), vect.end());
我希望能够按 x、y 或 dist 进行排序。
我想我可能需要重载> 或== 运算符才能使用C++ 标准库提供的sort?
重载的代码是什么样的?我知道如何重载像<< 这样的ostream 运算符来显示数据,但是在这种复杂的情况下,我们如何进行重载以允许我们使用sort?
【问题讨论】:
标签: c++ sorting object vector overloading