【发布时间】:2014-10-31 17:47:42
【问题描述】:
我有QMap<QString, MyClass*>。我需要使用自然比较按键对其进行排序。
我愿意:
std::map<QString, MyClass*> map = c.toStdMap();
std::sort(map.begin(), map.end(), strnatcmp1<std::pair<QString, MyClass*>>);
但是,这甚至无法编译。即使它这样做了,据我所知,它也会对我原来的QMap 的副本进行排序。
有没有办法通过提供的比较键功能对我的QMap进行按键排序?
【问题讨论】:
-
你为什么要这样做?! QMap 是一棵红黑树,它已经按键排序了。
-
如果键是QString,它是按词法排序的(1 10 11 2 3 4),但我需要自然比较(1 2 3 4 10 11)。
-
那么,为什么不使用int作为key呢?
-
因为 QString 已经在项目中到处使用了。这个软件不是我写的
标签: c++ qt sorting qtcore qmap