Re: [問題] map元素的刪除?

看板C_and_CPP (C/C++)作者 (Khoguan Phuann)時間19年前 (2005/07/01 04:14), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/5 (看更多)
※ 引述《cplusplus (永夜)》之銘言: : erase的宣告: : iterator erase( : iterator _Where : ); : iterator erase( : iterator _First, : iterator _Last : ); : size_type erase( : const key_type& _Key : ); 嗯,剛才我再去查了一下。SGI 以及標準 C++ 所提供的 map 其三種 erase()在上述的第一、第二種,其傳回型態是 void, 而非如 sequence container 般,是傳回 iterator. 至於 VC++提供的 STL 版本是向 Dinkumware 買的,其 map 的這 兩個erase() 的確是傳回 iterator. Scott Meyers 在他的 Effective STL 一書中提到說,associative container 的 erase() 在標準中不傳回 iterator, 據解釋, 是考慮到這樣會有unacceptable performance penalty。但他 和許多人一樣,認為不然。看起來 Dinkumware 就是能夠做到 不會有什麼 performance penalty, 所以傳回 iterator。不過 這樣一來,就會有移植性的問題了。像是 g++ 就是依照標準, return void. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: khoguan 來自: 220.130.208.168 (07/01 04:44)

140.115.217.14 07/01, , 1F
oh no 我都直接查msdn 忘了vc的stl是...orz
140.115.217.14 07/01, 1F
文章代碼(AID): #12n5Akl6 (C_and_CPP)
文章代碼(AID): #12n5Akl6 (C_and_CPP)