- 論壇徽章:
- 0
|
(1)例如,我有一個(gè)map的key是int類型,那么當(dāng)我插入一個(gè)(1,xxx)以后,我再次插入一個(gè)(1,yyy),那么map的默認(rèn)key比較函數(shù)less<>會(huì)比較1<1,得到false,那么豈不是需要?jiǎng)?chuàng)建一個(gè)新的節(jié)點(diǎn),把(1,yyy)放到(1,xxx)之前?
既然less<>判斷是 "<",所以我覺得map應(yīng)該就和multimap行為相同啊。
換句話說,對(duì)于相同的key,map的insert為何覆蓋,而不是新創(chuàng)建一個(gè),這是為什么? 是標(biāo)準(zhǔn)規(guī)定了要這么實(shí)現(xiàn)的嗎?
(2)more effective c++都說了map的key比較是判斷"等價(jià)"而非"相等",然后對(duì)于整數(shù)類型的key而言,等價(jià)和相等沒有差別,為什么在實(shí)際中map的行為是如果有同樣的key插入,原來那個(gè)元素就被覆蓋呢?
map中的排序和查找都是基于"等價(jià)"的概念,對(duì)吧?
我感覺非常的矛盾,求解釋和澄清!
|
|