首页 > 解决方案 > 为什么 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,并且运行良好。

标签: c++

解决方案


嗯,这是 STL 设计师的设计决定。

据我们所知,end() 甚至可能NULL 或 null_ptr。这是一个我们不想知道的实现细节。


推荐阅读