C++二维坐标按行列排序
时间: 2024-10-28 12:07:10 浏览: 11
蓝桥杯c++-蓝桥杯竞赛练习之算法提高题格子位置.zip
在C++中,二维坐标通常表示为一对整数,例如`(x, y)`,其中`x`代表列索引,`y`代表行索引。如果你想对这样的二维坐标按照列优先(即先按列排序,再按行排序)的方式进行排序,一种常见的做法是将它们转换成一个可以比较的对象,比如结构体或者类,并提供一个自定义的比较函数。
首先,你可以创建一个包含`int x`和`int y`字段的结构体或类:
```cpp
struct Coordinate {
int x;
int y;
};
```
然后,你可以定义一个比较函数,如`compareCoordinates`,它接受两个`Coordinate`实例作为参数,根据列值`x`来进行排序:
```cpp
bool compareCoordinates(const Coordinate& c1, const Coordinate& c2) {
return c1.x < c2.x; // 按照列值升序排序
}
```
如果需要降序排列,只需改变比较条件为`c1.x > c2.x`。有了这个比较函数,你就可以使用标准库中的`std::sort`函数对二维坐标的数组或向量进行排序,如下所示:
```cpp
std::vector<Coordinate> coordinates = ...; // 你的坐标列表
std::sort(coordinates.begin(), coordinates.end(), compareCoordinates);
```
阅读全文