我有数据结构 QMap<QString, int> 我该如何按int键进行排序?

谢谢你。

有帮助吗?

解决方案

1)创建 std::map<int, std::string> 并将所有数据推向它(或您的 QStringQMap).

或者

2)创建 std::vector<std::pair<int, std::string>> vec,将所有数据推向它并致电 std::sort(vec.begin(), vec.end());

或者

3)使用 boost::bimap

其他提示

template<class K, class V>
struct InvertPairOf {
    std::pair<V,K> operator()(const std::pair<K,V>& p) const {
        return std::make_pair(p.second, p.first);
    }
};

void process(const QString& qm) {
    std::map<int, QString> sorted;
    std::transform(qm.begin(), qm.end(),
                   std::inserter(sorted, sorted.begin()),
                   InvertPairOf<QString,int>());
    process_sorted(sorted);  // ...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top