为什么 std::map find() 没有声明为 noexcept?
Why std::map find() is not declared as noexcept?
C++14标准定义std::map
的find()成员函数如下:
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
为什么这些函数没有定义为noexcept
?内部可能出现什么问题,这将需要抛出异常或产生未定义的行为(除了找不到元素,在这种情况下函数 returns 一个 end
迭代器并且无论如何都不需要抛出异常)?
find()
是基于地图的 Compare()
方法,这可能会引发异常(想象一下复杂键可能不正确的情况)。所以,我们不能确定 find()
不会引发异常。
C++14标准定义std::map
的find()成员函数如下:
iterator find(const key_type& x);
const_iterator find(const key_type& x) const;
为什么这些函数没有定义为noexcept
?内部可能出现什么问题,这将需要抛出异常或产生未定义的行为(除了找不到元素,在这种情况下函数 returns 一个 end
迭代器并且无论如何都不需要抛出异常)?
find()
是基于地图的 Compare()
方法,这可能会引发异常(想象一下复杂键可能不正确的情况)。所以,我们不能确定 find()
不会引发异常。