map預設是按照鍵(key)排序的。很多時候我們需要按值(value)排序,靠map裡的
演算法當然是不行的,那麼可以把它轉存到vector中,在對vector按照一定的規則排序即可。
//示例**:輸入單詞,統計單詞出現次數並按照單詞出現次數從多到少排序
#include
#include
#include
#include
#include
#include
void sortmapbyvalue(std::map& tmap, std::vector>& tvector);
int cmp(const std::pair& x, const std::pair& y);
int main()
std::maptmap;
std::string word;
while (std::cin >> word)
std::vector> tvector;
sortmapbyvalue(tmap,tvector);
for(int i=0;i
system("pause");
return 0;
int cmp(const std::pair& x, const std::pair& y)
return x.second > y.second;
void sortmapbyvalue(std::map& tmap, std::vector>& tvector)
for (std::map::iterator curr = tmap.begin(); curr != tmap.end(); curr++)
std::sort(tvector.begin(), tvector.end(), cmp);
STL之map按key排序與按value排序
如下 include include include include using namespace std typedef pair int fre bool comless const fre a,const fre b bool comgreater const fre a,const fre...
Map的按value值排序
map自帶按key值排序的屬性,但很多種情況下我們需要對map容器進行按vaule值排序,由於map沒有提供相應的api,我們只有自力更生了。可以利用pair和自定義排序函式實現,比如我們拿leetcode上的347題為例,統計一組數中出現次數最多的k個數,如下 自定義的pair比較函式,此函式需要...
STL sort函式 對map按值排序
問題 要對以map中的資料進行按value排序 難點 map中的資料是按照key排序的,用for迴圈進行迭代器輸出的順序,就是按照key排序的順序。但是按value排序就不可能了。方案 stl中的sort函式原型 include using namespace std template void s...