Сортировка QMap - PullRequest
       7

Сортировка QMap

2 голосов
/ 12 ноября 2010

У меня есть структура данных QMap<QString, int> как мне отсортировать ее по ключу int?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 12 ноября 2010

1) Создайте std::map<int, std::string> и отправьте в него все данные (или ваши QString и QMap).

или

2) Создать std::vector<std::pair<int, std::string>> vec, вставьте все данные и позвоните std::sort(vec.begin(), vec.end());

или

3) Использование boost::bimap

0 голосов
/ 12 ноября 2010
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);  // ...
}
...