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

如何用一个QVector<QPair<int,int>>去接收一个QMap<int,int>,并对QVector<QPair<int,int>>进行升序排序,再赋值给QMap?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 社区专家-Monster-XH 2023-03-03 16:10关注
基于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>。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报