如何使用std::sort按x坐标对结构进行排序
how can i sort my struct by x coordinate using std::sort
这里是我的结构:
class Pont{
private:
int x, y;
public:
Pont( int x=0, int y=0);
int getX() const;
int getY() const;
void setX( int x );
void setY( int y );
void move( int nx, int ny);
};
我填写我的Pont类型pontok:
while(n < N){
int x=(rand()%2000);
int y=(rand()%2000);
Pont p(x,y);
if(!letezike(p,n)){
pontok[n]=p;
++n;
}
我试过这个:
bool sorter(Pont const& lhs, Pont const& rhs) {
if (lhs.getX() != rhs.getX())
return lhs.getX() < rhs.getX();
}
std::sort(pontok[0], pontok[N], &sorter);
删除!=
检查。如果x
值相等,因为函数不会到达return
语句,那么它会给程序提供未定义的行为。
bool sorter(Pont const& lhs, Pont const& rhs) {
return lhs.getX() < rhs.getX();
}
如果x
值相等,这将返回false
,正如它应该做的那样
此外,您对std::sort
的呼叫不正确。假设pontok
是N
大小的点阵列,则需要执行以下操作:
std::sort(pontok, pontok + N, &sorter);
std::sort
采用一个迭代器范围,该范围指向要排序的序列的开始和结束。
当X坐标相等时,sorter
函数似乎什么都不返回,这就是你的意思吗?!
它可能很简单:
bool sorter(Pont const& lhs, Pont const& rhs) {
return lhs.getX() < rhs.getX();
}
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 对坐标结构的向量进行排序
- C 使用坐标结构的访问阵列元素
- 如何实现 std::map::查找包含两个结构'Pos'结构的比较逻辑,每个结构包含 x 和 y 坐标
- 创建用于将结构坐标存储为键和线号作为值的映射
- 如何从 CGAL 中的坐标和拓扑列表创建Polyhedron_3数据结构
- 试图输出点结构体的坐标
- 如何使用std::sort按x坐标对结构进行排序