如果我从std :: set中删除一个元素并传递密钥而不是迭代器,并且密钥现在不在set中,那么会抛出异常吗?事情是MSDN文档中的每一句话都说:“这确实是等等,但它不符合标准”。所以我需要知道标准行为。我只是在标准中找不到它。重定向到相关条款也是如此。感谢。
答案 0 :(得分:18)
size_type erase ( const key_type& x );
返回值
该函数返回的数量 元素被抹去,这在一定程度上 如果一个元素有一个,则容器为1 x的值存在(因此是 随后擦除),零 否则。
(来自set::erase)
答案 1 :(得分:9)
在第23.1节(容器要求)中找到:
没有erase(),pop_back()或 pop_front()函数抛出一个 异常。
所以erase
不能抛出异常。