📅  最后修改于: 2023-12-03 15:07:52.460000             🧑  作者: Mango
当我们需要对2D向量进行排序时,常常需要按照某一列的大小来排序。本文将介绍如何在C++中对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类型数值的向量。
为了按照指定的列数进行排序,我们需要编写一个比较函数,并将此函数传递给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
本文介绍了如何在C++中对2D向量按照指定列进行排序,需要编写一个比较函数,并将此函数传递给sort()函数。这种方法同样适用于其他编程语言中的2D向量排序。