C++ STL,常量迭代器,find()

lig*_*ulb 7 c++ iterator stl constants find

我目前正在学习STL,我对find和const迭代器有一些不确定性.假设我有一个find函数:

some_stl_container::const_iterator found = myContainer.find(value);
Run Code Online (Sandbox Code Playgroud)

在那之后,我应该检查我得到的found另一个const_iterator,或者只是对一个迭代器进行检查是有效的.基本上这样做会有任何区别:

if(found!=myContainer.cend())
Run Code Online (Sandbox Code Playgroud)

还有这个:

if(found!=myContainer.end())
Run Code Online (Sandbox Code Playgroud)

第一个看起来更准确(至少对我而言),但第二个应该也能正常工作,对吗?

Pra*_*ian 9

所有标准库容器都满足Container::iterator可转换为的要求Container::const_iterator.因此,两种比较都是有效的,并且会产生相同的结果.

§23.2.1 - 表96

X::iterator ...任何满足前向迭代器要求的迭代器类别.可转换为X::const_iterator.