📜  在C++中对2D向量进行排序|设置3(按列数)(1)

📅  最后修改于: 2023-12-03 15:07:52.460000             🧑  作者: Mango

在C++中对2D向量进行排序|设置3(按列数)

当我们需要对2D向量进行排序时,常常需要按照某一列的大小来排序。本文将介绍如何在C++中对2D向量按照指定列数进行排序。

1. 定义2D向量

我们先定义一个简单的2D向量来进行排序:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    vector<vector<int>> v = {{1,2,3},{4,5,2},{7,8,0},{1,2,1}};
    return 0;
}

其中,v是一个二维向量,包含了四个元素,每个元素都是一个含有三个int类型数值的向量。

2. 按列数排序

为了按照指定的列数进行排序,我们需要编写一个比较函数,并将此函数传递给sort()函数。

bool cmp(const vector<int>& a, const vector<int>& b) {
    return a[2] < b[2];
}

上述函数的参数是一个常量指向vector的引用,表示待比较的两个向量,比较的是它们第三列的大小,如果a的第三列比b的第三列小,则返回true,否则返回false。

接下来,我们通过sort()函数来将2D向量按指定列进行排序。

sort(v.begin(), v.end(), cmp);

上面的语句将v按照第三列进行排序。sort()函数的第一个参数是vector的迭代器,它指向待排序的起始位置,第二个参数指向排序的终止位置,第三个参数是比较函数的名称。

完整代码如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool cmp(const vector<int>& a, const vector<int>& b) {
    return a[2] < b[2];
}

int main() {
    vector<vector<int>> v = {{1,2,3},{4,5,2},{7,8,0},{1,2,1}};
    sort(v.begin(), v.end(), cmp);

    for(auto i:v) {
        for(auto j:i) {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}

输出结果如下:

7 8 0 
4 5 2 
1 2 1 
1 2 3 
3. 总结

本文介绍了如何在C++中对2D向量按照指定列进行排序,需要编写一个比较函数,并将此函数传递给sort()函数。这种方法同样适用于其他编程语言中的2D向量排序。