作者khoguan (Khoguan Phuann)
看板C_and_CPP
標題Re: [問題] map元素的刪除?
時間Fri Jul 1 04:33:13 2005
※ 引述《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)
1F:推 cplusplus:oh no 我都直接查msdn 忘了vc的stl是...orz 140.115.217.14 07/01