c++ - 为什么 c++ std::find 返回 container.end() 而不是 NULL 来表示“未找到”?
问题描述
每当我必须输入/阅读以下详细信息时,它总是让我感到困惑if(it==some_container.end()){...}
:
auto it=std::find(some_container.begin(),some_container.end());
if(it==some_container.end()){...}
...
似乎返回 NULL 是完全有效的,返回end()
没有任何好处。
其他一些语言在类似情况下也只是简单地返回它们等效的 NULL/null_ptr,并且运行良好。
解决方案
嗯,这是 STL 设计师的设计决定。
据我们所知,end() 甚至可能是NULL 或 null_ptr。这是一个我们不想知道的实现细节。
推荐阅读
- html - 如何在移动视图中修复页脚?页脚在移动视图中进入整个页面
- excel - 如何提取第一个单词以大写字母开头且最后一个符号在点 (.) 之前的文本?
- r - 将 string = 设置为在 r 中起作用
- javascript - 将样式从 firebase firestore 加载到画布错误
- java - 从数组中删除前 n 个元素的逻辑
- java - 当我使用 google drive api 搜索特定文件时收到错误消息“消息”:“无效值”
- vue.js - 如何正确使用 Vue.set()?
- angular - 当 selectedIndex 高于实际选项卡数时,材质选项卡更改为最后一个选项卡
- android - 我想用另一个片段替换一个片段,但这些应该基于在其他片段(主要片段)中单击的按钮发生
- postgresql - pgjdbc中的loginTimeout、connectTimeout和socketTimeout有什么区别