代码之家  ›  专栏  ›  技术社区  ›  Programmer

如何在不更改列表的情况下对数字列表进行排序[重复]

  •  -3
  • Programmer  · 技术社区  · 7 年前

    我需要订购一个存储在C++向量中的数字列表:

    #include <vector>
    #include <iostream>
    #include <algorithm>
    
    
    struct A
    {
    };
    
    bool compare(A i1, A i2) 
    { 
        if(i1.vec.size() > i2.vec.size())
            return true;; 
    }  
    
    int main()
    {
    std::vector<A> ax;
    ax.emplace_back(A{ 100, 300, 6, 123, 12, 451, 552});
    ax.emplace_back(A{ 100, 300, 6, 123, 12, 451});
    
    
    std::sort(ax.begin(), ax.end(), compare); 
    return 0;
    }
    

    根据上述代码,ax向量的顺序应为:

    { 100, 300, 6, 123, 12, 451}
    { 100, 300, 6, 123, 12, 451, 552}
    

    我无法获得需要在比较函数中添加什么来实现它?

    1 回复  |  直到 7 年前
        1
  •  1
  •   bruno    7 年前

    此外,在比较中,通过值而不是常量引用传递Oid,这是免费的,因为每次都会复制Oid