10

C++14 标准定义的 find() 成员函数std::map如下:

iterator find(const key_type& x);
const_iterator find(const key_type& x) const;

为什么这些函数没有定义为noexcept?内部可能出现什么问题,需要抛出异常或产生未定义的行为(除了找不到元素,在这种情况下函数返回end迭代器并且无论如何都不需要抛出异常)?

4

1 回答 1

11

find()基于Compare()映射的方法,这可能会引发异常(想象一个可能不正确的复杂键的情况)。所以,我们不能确定它find()不会引发异常。

于 2016-01-06T17:33:19.813 回答