關於map中含數字string的排序問題

2021-05-25 17:43:44 字數 963 閱讀 5508

大家都知道map內部是按照平衡二叉樹來設計的,所以無論是直接寫 如

mapstr_map;

str_map["alex"] = "yes?";

str_map["alex"] = "no!";

之後,這個map裡的順序就是

alex-no!

alex-yes?

當然,這是我之後才頓悟到的.  :)

具體問題是這樣,我簡化一下,由於需要在buf裡寫入值,再存到map裡

sprintf(buf, "instance -%d is ok", i+1);

id_ = buf;

sprintf(buf, "instance -%d is prepared", i+1);

if ( str_map.find( id_ ) == str_map.end() )   //若id_不存在,則新增進去

str_map[id_] = boost::lexical_cast(buf);

之後,這個map會被寫到html檔案裡。

結果當instance > 9時,問題出現了。

instance -1 is prepared

instance -10 is prepared

instance -11 is prepared

instance -12 is prepared

instance -2 is prepared

instance -3 is prepared

instance -4 is prepared

instance -5 is prepared

instance -6 is prepared

instance -7 is prepared

instance -8 is prepared

instance -9 is prepared

我的解決方式:

關於map中含數字string的排序方式

關於Go中的map

map的定義 m map string string m make map string int 空map var m map string int nil 遍歷 for k,v range map1 遍歷不保證順序,如果需要順序,需手動排序 獲取操作 value1 map key1 value1,...

關於JAVA中Map集合的遍歷

每次用到map集合的時候都要去查一下怎麼遍歷,最近一次查的,感覺還不錯,收藏吧!第一種 map string,string map new hashmap string,string for entry string,string entry map entryset 第二種 iterator.en...

關於Java中String類的hashCode方法

首先來看一下string中hashcode方法的實現原始碼 1 public inthashcode 9 hash h 10 11return h 12 在string類中有個私有例項欄位hash表示該串的雜湊值,在第一次呼叫hashcode方法時,字串的雜湊值被計算並且賦值給hash欄位,之後再呼...