場景:ios
按DDX值倒序取前十的板塊代碼,用 map<float, string, greater<float> > mapBKDDX; 存儲時,相同DDX值的板塊只能存儲第一個,有數據缺失。blog
解決方法:string
使用 multimap, 擁有等價關鍵的 關鍵-值 pair 的順序就是插入順序,且不會更改。(C++11 起)it
#include <iostream> #include <map> #include <algorithm> #include <functional> int main() { multimap<float, string, greater<float> > mapBKDDX; mapBKDDX.insert(make_pair(1.11, "880001")); mapBKDDX.insert(make_pair(1.12, "880001")); mapBKDDX.insert(make_pair(1.11, "880002")); mapBKDDX.insert(make_pair(1.10, "880001")); multimap<float, string, greater<float> >::iterator iter, iter_begin, iter_end; iter_begin = mapBKDDX.lower_bound(1.11); iter_end = mapBKDDX.upper_bound(1.11); for (iter = iter_begin; iter != iter_end; iter++) { cout << iter->second.c_str() << endl; } return 0; }