将一组点按 vector<point2f> 行列坐标排序 C++
时间: 2023-12-06 07:04:52 浏览: 154
可以使用 STL 中的 sort 函数和 lambda 表达式来对一组点按照行列坐标排序。假设我们有一个点类 Point2f(OpenCV 库中的点类),其成员变量为 x 和 y 表示横纵坐标,可以使用 lambda 表达式定义一个比较函数,按照行坐标为第一关键字,列坐标为第二关键字进行排序。
代码如下:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
#include <opencv2/core.hpp>
using namespace std;
using namespace cv;
int main() {
vector<Point2f> points = {{2, 3}, {1, 4}, {3, 2}, {1, 2}, {2, 1}};
sort(points.begin(), points.end(), [](Point2f a, Point2f b) {
if (a.x != b.x) {
return a.x < b.x;
} else {
return a.y < b.y;
}
});
for (auto p : points) {
cout << "(" << p.x << ", " << p.y << ")" << endl;
}
return 0;
}
```
以上代码中使用了 lambda 表达式定义了一个比较函数,按照行坐标为第一关键字,列坐标为第二关键字进行排序。最后使用 sort 函数对点集进行排序,输出结果即为按照行列坐标排序后的点集。
注意:以上代码中使用了 OpenCV 库中的 Point2f 类,实际应用中可能需要根据具体情况进行修改。
阅读全文