作者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