[英]C++ STL, constant iterators, find()
我目前正在学习STL,我对find和const迭代器有一些不确定性。 假设我有一个find函数:
some_stl_container::const_iterator found = myContainer.find(value);
在那之后,我应该检查我在另一个const_iterator中found
,或者对一个迭代器进行检查是否有效。 基本上这样做会有任何区别:
if(found!=myContainer.cend())
还有这个:
if(found!=myContainer.end())
第一个看起来更准确(至少对我而言),但第二个应该也能正常工作,对吗?
所有标准库容器都满足Container::iterator
可转换为Container::const_iterator
。 因此,两种比较都是有效的,并且会产生相同的结果。
从§23.2.1 - 表96
X::iterator
...
满足前向迭代器要求的任何迭代器类别。 可转换为X::const_iterator
。
检查你的迭代器是否与myContainer.end()
不同。 cend
和cbegin
方法,这里只是为了明确地获得常量迭代器,这样就使得你的情况没有什么区别。
请注意,您可以在c ++ 11中执行auto found = myContainer.find(value)
来推断迭代器类型,并且有些人会认为标准库是正确的名称(而不是STL)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.