J'ai la structure de données QMap<QString, int>
comment puis-je le trier par clé int?Trier QMap <QString, int>
Merci.
J'ai la structure de données QMap<QString, int>
comment puis-je le trier par clé int?Trier QMap <QString, int>
Merci.
1) Créez std::map<int, std::string>
et insérez-y toutes les données (ou vos QString
et QMap
).
ou
2) Créer std::vector<std::pair<int, std::string>> vec
, pousser toutes les données et appeler std::sort(vec.begin(), vec.end());
ou
3) Utilisez 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); // ...
}
Je ne comprends pas comment '1) 'aidera à trier. Y at-il un moyen de trier PAS une copie, mais la carte réelle? – Oleksandra