std :: set erase ( x )
在STL中实现的方式是erase ( collection.find( x ) );
(x
是const key_type&
)吗?
答案 0 :(得分:2)
我确信它们可能非常相似,但是它们会产生差异,因为必须以某种方式处理“不存在”元素,而另一方则不需要担心(并且可能不会在非调试版本中。
std::set::erase( const key_type& )
将返回0
或1
,具体取决于是否找到要删除的匹配元素。
std::set::erase( iterator )
不返回任何内容,只有在传入的迭代器可解除引用时才定义行为。因此,如果您传入find(x)
x
不在集合中,则表示您遇到问题。