2

データ構造体がありQMap<QString, int>ますが、intキーで並べ替えるにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

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

于 2010-11-12T13:07:27.470 に答える
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);  // ...
}
于 2010-11-12T13:11:16.940 に答える