看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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)
cplusplus:oh no 我都直接查msdn 忘了vc的stl是...orz 140.115.217.14 07/01