1. 程式人生 > >Qt工作筆記-QSort的基本使用

Qt工作筆記-QSort的基本使用

如下面這個程式碼:

#include <QCoreApplication>
#include <QVector>
#include <ctime>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    QVector<QString> qStrVec;

    for(int i = 100000; i > 0; i--){
        qStrVec << QString::number(i);
    }

    clock_t start, finish;
    double totalTime;

    start = clock();
    qSort(qStrVec.begin(), qStrVec.end());
    finish = clock();

    totalTime = (double)(finish - start)/CLOCKS_PER_SEC;
    qDebug() << "using " + QString::number(totalTime,'f',6) + " Time";


    return a.exec();
}

執行截圖如下:

雖然排序了,但並不是我想要的結果,呼叫他的第二個過載函式

改變程式碼:

#include <QCoreApplication>
#include <QVector>
#include <ctime>
#include <QDebug>

bool intThan(const QString &s1, const QString &s2)
{
    return s1.toInt() < s2.toInt();
}


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);


    QVector<QString> qStrVec;

    for(int i = 100000; i > 0; i--){
        qStrVec << QString::number(i);
    }

    clock_t start, finish;
    double totalTime;

    start = clock();
    qSort(qStrVec.begin(), qStrVec.end(), intThan);
    finish = clock();

    totalTime = (double)(finish - start)/CLOCKS_PER_SEC;
    
    qDebug() << "using " + QString::number(totalTime,'f',6) + " Time";


    return a.exec();
}

執行截圖如下:

變數內容如下: