例如,我們有地圖問題排序
map<char,int>mymap;
mymap['a']=101;
mymap['c']=45;
mymap['b']=76;
mymap['d']=98;
我知道,如果我們通過地圖迭代,它會根據打印件以下方式
a>=101;
b>=76;
c>=45;
d>=98;
怎麼做這樣的小鍵指小值?或
a-45
b-76
c-98
d-101
? 謝謝
例如,我們有地圖問題排序
map<char,int>mymap;
mymap['a']=101;
mymap['c']=45;
mymap['b']=76;
mymap['d']=98;
我知道,如果我們通過地圖迭代,它會根據打印件以下方式
a>=101;
b>=76;
c>=45;
d>=98;
怎麼做這樣的小鍵指小值?或
a-45
b-76
c-98
d-101
? 謝謝
如果我正確地理解了你,你根本不想永久關聯值,你想要訂購兩套不同的值,然後將它們排列在一起。在這種情況下,不要使用std :: map。你需要兩個不同的std :: set(或multiset,如果你想允許重複的值),它們分別對這些值進行排序。然後在某個點上一起迭代兩者。
你必須自己做,地圖不會迭代這樣的值。一種選擇是使用第二個映射,其中鍵和值被交換(如果可以有重複值,則使用多映射)。
你應該嘗試使用boost multi-index,比使用兩套/地圖和大致相同的速度更少的開銷。