排序坐标点c++
Sorting Coordinate Points c++
在一个应用程序中,我测量了a的许多二维坐标(x,y)模式。这种图案由一组固定在网格上的点组成x和y方向的倾斜度。这些坐标都有一个分数质量和按这个分数排序。我要做的是排序这些坐标首先在x上,并定义的组(区域)在一起的x坐标。在这一步之后,我想排序不同的x区域在y区域
在此之后,我能够将坐标标记为相应的图案(网格)标签。
示例:测量坐标(x, y) =(2, 2),(2、3),(1、2),(1,3),(2,1),(1,1),(2),(3),(3,1)
步骤1后:(x, y) =(1、2),(1、3)(1)(2,2),(2、3),(2,1)(2),(3),(3,1)
步骤2后:(x, y) =(1, 1),(1、2),(1,3),(2,1),(2,2),(2,3),(3、1),(2),(3)
是否存在已经执行此任务的排序例程?例程如果没有测量图案的某些坐标,也应该可以工作。
谁能给我一些提示,我不是一个有经验的c++程序员,但也许有一些提示我可以做这项工作!您需要一个稳定的排序算法(它不会改变相等元素的顺序)。先按y
坐标排序,再按x
坐标排序,得到期望的结果:
std::stable_sort(points.begin(), points.end(), yComparator());
std::stable_sort(points.begin(), points.end(), xComparator());
例如:
: (x, y) =(2, 2),(2、3),(1、2),(1,3),(2,1),(1,1),(2),(3),(3,1)
按y: (x, y) =(2, 1),(1, 1),(1),(2, 2),(1、2),(2),(2、3),(1,3),(3、3)
按x:排序(x, y) =(1, 1),(1、2),(1,3),(2,1),(2,2),(2,3),(3、1),(2),(3)
您可以使用std::sort
和自定义operator<
来完成此操作,例如:
#include <algorithm>
#include <vector>
struct coord {
double x,y,quality;
};
bool operator<(const coord& a, const coord& b) {
return a.quality < b.quality;
}
int main() {
std::vector<coord> coords;
std::sort(coords.begin(), coords.end());
}
如果你不希望"质量"被存储在结构中,你可以调用一些函数直接在operator<
中计算它,例如:
double quality(const coord& c);
bool operator<(const coord& a, const coord& b) {
return quality(a) < quality(b);
}
如果你知道你的数字的范围,你可以用X乘以一个大数字,然后把y加到这个数字上。现在,您可以简单地对单个数字进行排序,也可以像其他人描述的那样使用stl库进行排序。
bool compare_coord(pair<int, int> &coord1, pair<int, int> &coord2){
if(coord2.second > coord1.second)
return true;
if(coord2.second == coord1.second && coord2.first > coord1.first)
return true;
return false;
}
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 比较两个节点坐标的最佳方法是什么?
- 在 OpenGL 中将笛卡尔世界坐标转换为球面局部坐标
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在C++中获取坐标?
- 如何将 x.y 坐标的值存储在不同的数组中
- 如何将鼠标坐标转换为"mm"
- 重心坐标并不总是有效(3d)
- 尝试渲染像素坐标时,简单线条渲染失败
- 使用 GTK3 C++获取指针坐标
- 从 CGAL 3D 网格生成中获取顶点坐标的 -6.27744e+66:mesh_implicit_sphere示例
- 我想制作设置鼠标回调函数,以便在仍然按下鼠标左键时连续传递坐标
- 将鼠标悬停在图片框上时,如何显示带有 x-y 坐标的十字准线光标?
- 跳转到通过输入坐标定义的控制台屏幕位置
- QImage::p ixel 和 QImage::setPixel 坐标超出范围误差
- 如何从 3d 对象文件中获取 3d 坐标
- 使用C++中的链表对与原点的距离、x 和 y 坐标进行排序