如何用一个QVector<QPair<int,int>>去接收一个QMap<int,int>,并对QVector<QPair<int,int>>进行升序排序,再赋值给QMap?

如何用一个QVector>去接收一个QMap,并对QVector>进行升序排序,再赋值给QMap?

基于Monster 组和GPT的调写:
用QMap的构造函数来将QVector<QPair<int,int>>转换为QMap<int,int>,然后使用QMap的排序函数对其进行排序。以下是代码示例:

#include <QMap>
#include <QVector>
#include <QPair>
#include <algorithm>

int main() {
    QMap<int, int> myMap = {{3, 10}, {1, 20}, {2, 30}}; // 创建一个 QMap<int,int>

    QVector<QPair<int, int>> myVector;

    // 将 QMap<int,int> 转换为 QVector<QPair<int,int>>
    for (auto it = myMap.begin(); it != myMap.end(); ++it) {
        myVector.append(QPair<int,int>(it.key(), it.value()));
    }

    // 对 QVector<QPair<int,int>> 进行升序排序
    std::sort(myVector.begin(), myVector.end(), [](const QPair<int,int>& a, const QPair<int,int>& b) {
        return a.first < b.first;
    });

    // 将 QVector<QPair<int,int>> 赋值给 QMap<int,int>
    myMap.clear();
    for (const auto& pair : myVector) {
        myMap.insert(pair.first, pair.second);
    }

    return 0;
}


先创建一个QMap<int,int>,然后将其转换为QVector<QPair<int,int>>,接着对QVector<QPair<int,int>>进行升序排序,最后将排序后的QVector<QPair<int,int>>赋值给QMap<int,int>。

小魔女参考了bing和GPT部分内容调写:
可以使用QMap的toStdMap函数将QMap转换为标准库中的map,然后使用sort函数对map进行排序,最后使用QMap的fromStdMap函数将map转换为QMap,以实现对QMap的升序排序。具体代码如下:

QMap<int,int> qmap;
// 向qmap中添加元素

std::map<int,int> stdmap = qmap.toStdMap();
std::sort(stdmap.begin(), stdmap.end());
QMap<int,int> sorted_qmap = QMap<int,int>::fromStdMap(stdmap);

回答不易,记得采纳呀。

  • 可以看下qt参考手册中的 qt int