今天我写了一个小谓词来查找容器中的匹配符号。STL算法和const_iterators
但是我遇到了一个问题:我想在一个类的const方法内调用std::find_if
这个谓词,在这个类的成员容器中搜索。
但我只注意到std::find
和std::find_if
都不能在const_iterators
上运行!
我检查了一些C++参考,似乎没有版本std::find
或std::find_if
接受/返回const_iterators
。我只是不明白为什么,因为从我看到的情况来看,这些算法不可能修改迭代器引用的对象。
这里是如何在SGI实现记录std::find
:
返回第一个迭代我在 范围[第一,最后),使得*我== 值。如果不存在迭代器,则返回last。
你得到的实际错误是什么?你还可以发布一些示例代码?谢谢 – 2009-10-27 17:56:28
其实,你只是误读了文档,请参阅下面的Pavel的答案。如果你测试你会发现它确实有效。 – 2009-10-27 18:09:36
你的问题意味着你有一些不起作用的代码 - 特别是“但我面临一个问题” - 而实际上你只是在大声思考。如果你尝试过,你会看到它的工作,我就低估了这个问题。 – 2009-10-27 18:23:00