当前位置:  开发笔记 > 编程语言 > 正文

为什么std :: map find()没有被声明为noexcept?

如何解决《为什么std::mapfind()没有被声明为noexcept?》经验,为你挑选了1个好方法。

C++ 14标准定义了find()成员函数,std::map如下所示:

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

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



1> 88877..:

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

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有