list<vector<int>> pointsToNodes;如何用sort函数进行自定义函数的排序
时间: 2024-09-22 12:04:07 浏览: 49
`list<vector<int>> pointsToNodes`是一个列表,其中每个元素都是一个包含整数的向量,通常表示二维空间中的点或节点位置。如果想对这个列表按照某个自定义规则排序,比如按点的x坐标或y坐标升序排列,可以先创建一个自定义比较函数,然后将其作为`sort`函数的第三个参数传递进去。
下面是一个基本的例子,假设我们有一个`Point`类,它有两个成员变量`x`和`y`,我们想要按照y坐标进行降序排序:
```cpp
#include <algorithm>
#include <list>
// 假设Point类有这样的定义
class Point {
public:
int x, y;
Point(int x_, int y_) : x(x_), y(y_) {}
};
bool comparePoints(const vector<int>& p1, const vector<int>& p2) {
Point p1Pt(p1[0], p1[1]);
Point p2Pt(p2[0], p2[1]);
return p1Pt.y > p2Pt.y; // 按照y坐标降序排序
}
void sortListByYCoordinate(list<vector<int>>& pointsToNodes) {
sort(pointsToNodes.begin(), pointsToNodes.end(), comparePoints);
}
// 使用示例
int main() {
list<vector<int>> pointsToNodes = {/*...*/};
sortListByYCoordinate(pointsToNodes);
// 现在pointsToNodes应该是按y坐标降序排列的
return 0;
}
```
这里的`comparePoints`函数会接收两个向量(代表两个点),返回`true`意味着第一个点应该排在第二个点之前,反之亦然。
阅读全文