我需要在地圖中存儲各種字符串,但我想讓它們按大小排序。std ::映射排序謂詞按字符串大小排序但保留不同的字符串?
使用這樣的斷言:
struct strsize_less {
bool operator()(const string& l, const string& r) {
return l.size() < r.size();
};
};
將完成訂貨,但它會與同尺寸丟棄串
int main() {
typedef map<string, int, strsize_less> mymap_t;
mymap_t mymap;
mymap["j" ] = 0;
mymap["i" ] = 1;
mymap["hh" ] = 2;
mymap["gg" ] = 3;
mymap["fff" ] = 4;
mymap["eee" ] = 5;
mymap["dddd" ] = 6;
mymap["cccc" ] = 7;
mymap["bbbbb"] = 8;
mymap["aaaaa"] = 9;
for(mymap_t::iterator i = mymap.begin(); i!=mymap.end(); ++i)
cout << "k = " << i->first << " - > v= " << i->second << endl;
return 0;
}
輸出爲:
我的問題:有沒有我可以用於achi的謂詞前夜以下的輸出:
k = j - > v= 0
k = i - > v= 1
k = hh - > v= 2
k = gg - > v= 3
k = fff - > v= 4
k = eee - > v= 5
k = dddd - > v= 6
k = cccc - > v= 7
k = bbbbb - > v= 8
k = aaaaa - > v= 9
不丟棄相等的鍵聽起來更像是一個'multimap'。 –
您可以使用比較運算符將大小用作第一條件,將實際內容用作匹配大小的第二條件。 –