求大神解答,C++对vector中的Point的对象进行排序,对象大小规则:p1 < p2: p

求大神解答,C++对vector中的Point的对象进行排序,对象大小规则:p1<p2:p1.x<p2.xorp1.x=p2.xandp1.y<p2.y,point_.t... 求大神解答,C++对vector中的Point的对象进行排序,对象大小规则:p1 < p2: p1.x < p2.x or p1.x = p2.x and p1.y < p2.y ,point_.txt内容为
1 1881 1009.5 8170.5 HOSPITAL
2 462 1534.5 8139 HOUSE
3 1050 3782.5 5535 HOUSE
排序的地方出现了错误,是怎么回事?代码如下
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <fstream>
using namespace std;

class Point
{
int obj_id;
string des;
float x, y;
static int count;
public:
Point(){}
Point(int a,float c, float d, string e) :obj_id(a), x(c), y(d),des(e){ count++; }
static int GetCount(){ return count; }
bool operator<(const Point &p){ return (x < p.x || (x = p.x && y < p.y)); }
float Getx() { return x; }
float Gety() { return y; }
string Getdes() { return des;}
};
int Point::count=0;

bool lessmark( Point &p1, Point &p2)
{
return p1 < p2;
}

void main()
{
fstream p_file("point.txt", ios::in );
if (p_file.fail())
{
cout << "p_file文件打开失败";
exit(0);
}
vector<Point> point;
int a;
float x1, y1 ,x2;
string des;
while (!p_file.eof())
{
p_file >> a >> x2 >> x1 >> y1 >> des;
Point p(a, x1, y1, des);
point.push_back(p);
}
p_file.close();
vector<Point>::iterator itp = point.begin();
ofstream p2_file("point2.txt");
sort(point.begin(), point.end(),lessmark );
for (; itp != point.end(); itp++)
{
cout<<(*itp).Getx()<<" "<<(*itp).Gety() << (*itp).Getdes()<<endl;
}
p2_file.close();
}
展开
 我来答
IT孤鹜
2014-05-07 · TA获得超过4198个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3614万
展开全部
(⊙o⊙)…、、、、没财富值

错误在这里
bool operator<(const Point &p){ return (x < p.x || (x = p.x && y < p.y)); }
改为
bool operator<(const Point &p){ return (x < p.x || (x == p.x && y < p.y)); }

望采纳!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哀伤之酸
2014-05-07 · TA获得超过230个赞
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:141万
展开全部
bool operator<(const Point &p){ return (x < p.x || (x = p.x && y < p.y)); }

改为
bool operator < (const Point &p) { return ((x < p.x || x = p.x) && y < p.y);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式