C/C++ qt如何对QMap<QString, int>类型根据其中int类型排序,请给出完整的代码
时间: 2024-10-19 08:10:10 浏览: 36
QT,QVector 基本用法,遍历[实例讲解] - 小皮球的博客 - CSDN博客1
在C++中,Qt库的QMap是一种关联容器,其内部并不支持直接的排序操作。如果你想要按照`int`值对`QMap<QString, int>`进行排序,你可以选择先将键值对转换成`std::pair`,然后利用`std::sort`函数自定义比较函数来完成排序。
以下是一个简单的示例:
```cpp
#include <QMap>
#include <vector>
#include <algorithm>
// 定义一个比较函数,用于比较QMap中的int值
bool comparePairs(const std::pair<QString, int>& a, const std::pair<QString, int>& b) {
return a.second < b.second; // 降序排序,如果你想升序可以改为 `a.second > b.second`
}
void sortQMap(QMap<QString, int>& QMapObject) {
std::vector<std::pair<QString, int>> mapVector(QMapObject.begin(), QMapObject.end());
std::sort(mapVector.begin(), mapVector.end(), comparePairs);
// 将排序后的元素放回QMap
QMapObject.clear();
for (const auto& pair : mapVector) {
QMapObject[pair.first] = pair.second;
}
}
int main() {
QMap<QString, int> QMapExample;
// ...添加一些键值对到QMap
sortQMap(QMapExample);
// 打印排序后的结果
for (const auto& entry : QMapExample) {
qDebug() << "Key: " << entry.key() << ", Value: " << entry.value();
}
return 0;
}
```
注意:这个方法会改变原始的`QMap`并返回一个新的排序顺序。如果需要保持原QMap不变,可以创建一个新的QMap来存储排序结果。
阅读全文