gpt4 book ai didi

c++ - 按键排序实际的QMap

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:20:45 24 4
gpt4 key购买 nike

我有QMap<QString, MyClass*> .我需要使用自然比较按键对其进行排序。我愿意:

std::map<QString, MyClass*> map = c.toStdMap();
std::sort(map.begin(), map.end(), strnatcmp1<std::pair<QString, MyClass*>>);

但是,这甚至无法编译。即使它这样做了,据我所知,它也会对我原来的 QMap拷贝进行排序。 .

有什么方法可以对我的 QMap 进行排序吗?通过键与提供的比较键的功能?

最佳答案

您可以采取多种方法:

main.cpp

#include <QMap>
#include <QDebug>
#include <map>


struct str_num_compare {
bool operator() (const QString& lhs, const QString& rhs) const
{return lhs.toInt()<rhs.toInt();}
};

int main()
{
QStringList stringList{"1", "10", "11", "2", "3", "4"};

QMap<int, QString> map;
foreach (const QString &string, stringList)
map.insert(string.toInt(), string);
qDebug() << "Integer key approach:" << map;

std::map<QString, QString, str_num_compare> std_map;
foreach (const QString &string, stringList)
std_map[string] = string;
qDebug() << "QString key approach with std::map:";
for (auto item : std_map)
qDebug() << item.first;


return 0;
}

主程序

TEMPLATE = app
TARGET = main
QT = core
CONFIG += c++11
SOURCES += main.cpp

构建并运行

qmake && make && ./main

输出

Integer key approach: QMap((1, "1")(2, "2")(3, "3")(4, "4")(10, "10")(11, "11"))
QString key approach:
"1"
"2"
"3"
"4"
"10"
"11"

关于c++ - 按键排序实际的QMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680592/

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