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 << "}},";
    }    
}