【发布时间】:2011-05-30 08:59:22
【问题描述】:
如果我从 std::set 中删除一个元素并传递密钥,而不是迭代器,并且密钥现在不在集合中,是否会引发异常?问题是 MSDN 文档中的每一秒都说:“这确实是废话,但它不符合标准”。所以我需要知道标准行为。我只是在标准中找不到它。重定向到相关子句也可以。谢谢。
【问题讨论】:
-
顺便说一句,在我的 STL (SLTPORT) 版本中,功能检查,但我需要知道标准行为
如果我从 std::set 中删除一个元素并传递密钥,而不是迭代器,并且密钥现在不在集合中,是否会引发异常?问题是 MSDN 文档中的每一秒都说:“这确实是废话,但它不符合标准”。所以我需要知道标准行为。我只是在标准中找不到它。重定向到相关子句也可以。谢谢。
【问题讨论】:
size_type erase ( const key_type& x );
返回值
函数返回数量 元素被擦除,在集合中 如果元素具有 x 的值存在(因此是 随后被擦除)和零 否则。
(来自set::erase)
【讨论】:
在第 23.1 节(容器要求)中找到了这个:
没有擦除(),pop_back()或 pop_front() 函数抛出一个 例外。
所以erase 不能抛出异常。
【讨论】: