如何在 QCollator 不可用的 Qt 4.6.2 中对 QStringList 进行数字排序
How can I do a numeric sort of a QStringList in Qt 4.6.2 where QCollator is not available
我看过使用 QCollator 对 QStringList 进行数字排序的示例。不幸的是,QCollator 直到 Qt 5.2 或更高版本才可用。我正在使用 Qt4.6.2。
我的 QStringList 只包含整数。
示例 QStringList 值:
20
2
1
3
预期排序结果:
1
2
3
20
任何人都可以提供一个简单的示例 C++ 源代码来为 QStringList 提供数字排序吗?
QStringList::sort
的 Qt 文档建议使用 QMap 按任意顺序排序。您可以构建一个映射并获取排序后的字符串,如下所示:
QStringList l = QStringList() << "3" << "20" << "2" << "1";
QMap<int, QString> m;
for (auto s : l) m[s.toInt()] = s;
l = QStringList(m.values());
我看过使用 QCollator 对 QStringList 进行数字排序的示例。不幸的是,QCollator 直到 Qt 5.2 或更高版本才可用。我正在使用 Qt4.6.2。
我的 QStringList 只包含整数。
示例 QStringList 值:
20
2
1
3
预期排序结果:
1
2
3
20
任何人都可以提供一个简单的示例 C++ 源代码来为 QStringList 提供数字排序吗?
QStringList::sort
的 Qt 文档建议使用 QMap 按任意顺序排序。您可以构建一个映射并获取排序后的字符串,如下所示:
QStringList l = QStringList() << "3" << "20" << "2" << "1";
QMap<int, QString> m;
for (auto s : l) m[s.toInt()] = s;
l = QStringList(m.values());