今天我编写了一个小的谓词函数,用于在容器中查找匹配的符号。
但是我面临一个问题:我想将这个谓词函数用于类的const方法内,在该类的成员容器中搜索时使用std :: find_if调用。
但是我刚刚注意到,既不是std :: find也不是std :: find_if能够在const_iterator上操作!
我在一些C ++参考资料上检查了一下,似乎没有版本的std :: find或std :: find_if接受/返回const_iterator。我就是无法理解为什么,因为据我所见,这些算法不可能修改迭代器引用的对象。
以下是SGI实现中std :: find的文档说明:
返回范围[first,last)中第一个满足*i==value的迭代器i。 如果不存在这样的迭代器,则返回last。
但是我面临一个问题:我想将这个谓词函数用于类的const方法内,在该类的成员容器中搜索时使用std :: find_if调用。
但是我刚刚注意到,既不是std :: find也不是std :: find_if能够在const_iterator上操作!
我在一些C ++参考资料上检查了一下,似乎没有版本的std :: find或std :: find_if接受/返回const_iterator。我就是无法理解为什么,因为据我所见,这些算法不可能修改迭代器引用的对象。
以下是SGI实现中std :: find的文档说明:
返回范围[first,last)中第一个满足*i==value的迭代器i。 如果不存在这样的迭代器,则返回last。