gpt4 book ai didi

c++ - Qt 4.8 : trying to sort QList on 1st element of QStringList as integer

转载 作者:行者123 更新时间:2023-11-27 23:59:45 31 4
gpt4 key购买 nike

我有一个 QList<QStringList>名为 sortme其中第一个QString在每个QStringList是作为字符串的有效整数,例如:

exampleQStringList << "5" << "foo" << "bar"

对于 qsort,这是 4.8 使用的而不是 std:,我知道我想要一个比较函数。这是我认为我需要写的内容:

bool MainWindow::qslLessThan(const QList<QStringList> &v1, const QList<QStringList> &v2)
{
// here I would get the first element.toInt() and return <
return(true);
}

然后:

qSort(sortme.begin(), sortme.end(), qslLessThan);

很明显,我遗漏了一些东西,因为编译器提示“错误:没有匹配函数来调用'qSort(QList::iterator, QList::iterator, )'”,即使我正在尝试对 QList<QStringList> 进行排序和 sortme就是这样。

最佳答案

首先,qsort() 需要的函数必须是原始函数,而不是任何类的成员。其次,在您的情况下,此比较函数必须采用 QStringList 引用而不是 QList 引用,因为它是您正在比较的 QStringList。

#include <QCoreApplication>
#include <QDebug>

bool lessThan( const QStringList& v1, const QStringList& v2 )
{
return v1.first() < v2.first();
}

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

QList<QStringList> sortme;

QStringList entryOne = QStringList() << "1" << "foo1" << "bar1";
QStringList entryTwo = QStringList() << "2" << "foo2" << "bar2";
QStringList entryThree = QStringList() << "3" << "foo3" << "bar3";

sortme << entryTwo << entryOne << entryThree;

qSort( sortme.begin(), sortme.end(), lessThan );

// Print out the list data so we can see that it got sorted ok
for( int i = 0; i < sortme.size(); i++ )
{
QString data = sortme.at( i ).join( "," );
qDebug() << QString( "Item %1: %2" ).arg( i + 1 ).arg( data );
}

return a.exec();
}

关于c++ - Qt 4.8 : trying to sort QList<QStringList> on 1st element of QStringList as integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059938/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com