C map根據value排序

2021-06-21 05:25:07 字數 997 閱讀 7778

改變map根據key值排序策略可以過載()運算子

希望使用map根據value排序

map中元素型別是pair,第乙個想到的是過載pair的《運算子

但是標頭檔案為pair過載了《運算子

templateinline bool

operator& __x, const pair<_t1 _t2>& __y)

直接過載的話,不同的編譯器可能會報錯

所以還是只能寫乙個比較函式,將map中的pair轉存到vector中,呼叫序列容器排序方法sort

#include "stdafx.h"

#include #include #include #include #include using namespace std;

typedef pairpair;

ostream& operator << (ostream& out, const pair& p)

int cmp(const pair& left, const pair& right)

int _tmain(int argc, _tchar* argv)

{ maptest;

test.insert(make_pair(4,3));

test.insert(make_pair(2,5));

test.insert(make_pair(1,3));

test.insert(make_pair(-2,5));

vectortmp(test.begin(),test.end());

sort(tmp.begin(),tmp.end(),cmp);

for(auto p=tmp.begin();p!=tmp.end();p++)

{ cout<

結果:

C map容器 根據value的值進行排序

map容器會自動根據key的值進行排序,要想要map容器中的內容根據value中的值進行排序 可先把map中的內容拷貝到vector容器中,然後再用sort排序 pointcloud.h typedef struct pitarea pit static bool cmp by value cons...

c map 對key和value排序

1.對key值排序 使用提供的less grater或自定義排序 include include include include include include std greater using namespace std 按key的長度公升序排列 struct cmpbykeylength in...

Lua Table根據value排序

使用lua開發需要把有用的資料全部存進table裡,lua也提供了乙個sort介面來給table排序,但是sort的實現也是基於氣泡排序,他預設table的key是從1開始的,這樣就會造成當我們的key是一些特殊的標誌位,比如遊戲中揹包資料的guid,就會無法正常排序。所以我們需要單獨封乙個介面來實...