QList中QPair类型排序(C++ list排序pair)

头文件

#include

QList类型:QList> list;

方法一

类成员函数:

static bool CompareUsbIndex(const QPair &first,const QPair &second);

函数实现:

bool LocalSystem::CompareUsbIndex(const QPair &first, const QPair &second)
{
    return first.first < second.first;//正向排序
    //return first.first < second.first;//反向排序
}

// 比较函数必须要加static, 静态函数,没有this指针,否则会报错。

 非标准语法;请使用 "&" 来创建指向成员的指针
QList> list;
QPair pair1;
pair1.first = 5;
pair1.second = "a";
list.append(pair1);
QPair pair2;
pair2.first = 4;
pair2.second = "b";
list.append(pair2);
qSort(list.begin(),list.end(),CompareIndex);

方法二

使用lambda表达式

        auto sort_func = [](const QPair first, const QPair second)->bool{
            return first->first() < second->first();
        };

QList> list;
QPair pair1;
pair1.first = 5;
pair1.second = "a";
list.append(pair1);
QPair pair2;
pair2.first = 4;
pair2.second = "b";
list.append(pair2);
qSort(list.begin(),list.end(),sort_func);

QPair可任意类型,比较方法自己定义。

可将QList\QPair替换成C++类型std::list,std::pair。

你可能感兴趣的:(QT/C++基础,qt,c++)