C++ 根据C+中对的第一个向量进行排序+;
我有以下形式的数据结构:C++ 根据C+中对的第一个向量进行排序+;,c++,algorithm,sorting,vector,std-pair,C++,Algorithm,Sorting,Vector,Std Pair,我有以下形式的数据结构: vector<pair<vector<unsigned>,vector<unsigned> > a; 我知道我可以使用气泡排序进行排序。但C++中是否有其他类似STL函数的方法来做同样的事情。< P>只使用 STD::排序< /COD>使用一个函数对象(这里是lambda),比较每个代码的第一个元素>配对< /Cal>(并且使用操作符) E.g. If vector<unsigned> a1,a3;
vector<pair<vector<unsigned>,vector<unsigned> > a;
我知道我可以使用气泡排序进行排序。但C++中是否有其他类似STL函数的方法来做同样的事情。< P>只使用<代码> STD::排序< /COD>使用一个函数对象(这里是lambda),比较每个代码的第一个元素>配对< /Cal>(并且使用<代码>操作符)
E.g. If
vector<unsigned> a1,a3;
a1.push_back(1); a1.push_back(3);
vector<unsigned> a2,a4;
a2.push_back(67); a2.push_back(90);
a.push_back(make_pair(a1,a2));
a3.push_back(1); a3.push_back(2); a3.push_back(4);
a4.push_back(89); a4.push_back(29);
a.push_back(make_pair(a3,a4));
#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
int main()
{
vector<pair<vector<unsigned>,vector<unsigned> >> a = {{{1,3},{67, 90}}, {{1,2,4},{89,29}}};
sort(begin(a), end(a), [](auto const& L, auto const& R) {
return L.first < R.first;
});
for (auto const& elem : a) {
std::cout << "{{";
for (auto const& u : elem.first)
std::cout << u << ", ";
std::cout << "},";
std::cout << "{";
for (auto const& u : elem.second)
std::cout << u << ", ";
std::cout << "}},";
}
}