STL中map按值排序

2021-06-18 20:37:13 字數 890 閱讀 2339

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...