的std ::设置<T> ::擦除(键)。如果没有钥匙怎么办?</t>

时间:2010-12-24 10:40:01

标签: c++ stl set

如果我从std :: set中删除一个元素并传递密钥而不是迭代器,并且密钥现在不在set中,那么会抛出异常吗?事情是MSDN文档中的每一句话都说:“这确实是等等,但它不符合标准”。所以我需要知道标准行为。我只是在标准中找不到它。重定向到相关条款也是如此。感谢。

2 个答案:

答案 0 :(得分:18)

size_type erase ( const key_type& x );
  

返回值

     

该函数返回的数量   元素被抹去,这在一定程度上   如果一个元素有一个,则容器为1   x的值存在(因此是   随后擦除),零   否则。

(来自set::erase

答案 1 :(得分:9)

在第23.1节(容器要求)中找到:

  

没有erase(),pop_back()或   pop_front()函数抛出一个   异常。

所以erase不能抛出异常。