gpt4 book ai didi

c++ - STL 算法和 const_iterators

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:21 26 4
gpt4 key购买 nike

今天我写了一个小谓词来查找容器中的匹配符号。

但是我遇到了一个问题:我想在类的常量方法内的 std::find_if 调用中使用这个谓词,在属于这个类。

但我刚刚注意到 std::findstd::find_if 都不能对 const_iterators 进行操作!

我检查了一些 C++ 引用资料,似乎没有 std::findstd::find_if 版本接受/返回 const_iterators。我只是不明白为什么,因为据我所见,这些算法无法修改迭代器引用的对象。

这是在 SGI 实现中记录 std::find 的方式:

Returns the first iterator i in the range [first, last) such that *i == value. Returns last if no such iterator exists.

最佳答案

std::findstd::find_if 绝对可以对给定容器的 *::const_iterator 进行操作。您是否偶然看到了这些函数的签名并误解了它们?

template <class InputIterator, class Type>
InputIterator find(InputIterator first, InputIterator last, const Type& val);

注意这里的InputIterator只是一个模板类型参数的名称,任何const_iterator都会满足它的要求。

或者,您可能将 const_iterator(即引用 const 值的迭代器)与 const 迭代器(即本身为 const 的迭代器)混淆)?

关于c++ - STL 算法和 const_iterators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com