排序QMap <qstring,int =“”> </qstring,>

时间:2010-11-12 12:54:31

标签: c++ qt sorting qmap

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

谢谢。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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);  // ...
}