随机生成10x10的二维vector,直接调用sort(a.begin(), a.end()),看结果。
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<vector<int> > a(10);
for (int i = 0; i < 10;i++)
for (int j = 0; j < 10; j++){
a[i].push_back(rand()%100);
}
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
cout << a[i][j] << "\t";
}
cout << endl;
}
cout << "After 2D sorting:" << endl;
sort(a.begin(),a.end());
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
cout << a[i][j] << "\t";
}
cout << endl;
}
system("pause");
return 0;
}
运行结果:
分析
sort是把vector<int>作为一个一维数组对象,整体进行比较和排序。
从结果中可以看出,默认比较两个int向量的规则是从第一个元素开始比,第一个元素小的,整个向量就小,如果第一个元素一样,再比较第二个,第二个元素小的,整个向量小,依此类推。sort默认按从小到大排序。
应用:多指标排序
在多指标排序时,可能会这么做:
定义结构体,元素为各指标,自定义实现bool compare函数,传给sort。
以后,只要把待排序各指标按照优先次序依次当作二维vector第二维的每个元素就行了。
例如,指标a、b、c,先依据a,a小的排前面,a一样时b小的排前面,ab都一样时c小的排前面。构造vector<vector<int>>,第二维size为3,分别表示a、b、c的值。