Re: [問題] map元素的刪除?
看板C_and_CPP (C/C++)作者khoguan (Khoguan Phuann)時間19年前 (2005/07/01 04:14)推噓1(1推 0噓 0→)留言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
140.115.217.14 07/01, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 5 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30