2010-11-12 37 views

回答

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

+0

我不明白怎麼'1 )'將有助於排序。有沒有什麼辦法來排序不復制,但實際的地圖? – Oleksandra 2014-10-31 17:31:28

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