c++ - 为什么 std::map find() 没有声明为 noexcept?

标签 c++ dictionary noexcept exception-specification

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

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

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

最佳答案

find() 基于 map 的 Compare() 方法,这可能会引发异常(想象一下复杂键可能不正确的情况) .因此,我们不能确定 find() 不会引发异常。

关于c++ - 为什么 std::map find() 没有声明为 noexcept?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34638399/

相关文章:

c++ - 可以将成员变量作为参数传递给 C++ 中的成员函数吗?

python - 如何在 python 中扩展字符串中的字符串?

C++ noexcept 规范取决于数据成员

c++ - 用于函数对象的 noexcept 运算符总是产生 true

c++ - 如何判断函数模板中 T 的赋值运算符是否抛出异常?

c++ - 控制台提示窗口出现在系统 ("start dir"上,但不出现在系统 ("start ipconfig"上)

重新哈希的 C++ 哈希表问题

python - 如果一个较小字典的所有值都存在于一个较大字典中,则返回 true

ios - 将 Firebase 字典数据转换为数组 (Swift)

c++ - C++ const reference的形式是什么(不是对const的引用,而是const引用)