Сегодня я написал небольшой предикат для поиска подходящих символов в контейнере.
Но я столкнулся с проблемой: я хочу использовать этот предикат в вызове std::find_if
внутри const-метода класса, ища в контейнере, который является членом этого класса.
Но я только что заметил, что ни std::find
, ни std::find_if
не могут работать на const_iterators
!
Я проверил некоторые ссылки на C ++, и, похоже, нет версии std::find
или std::find_if
, которая принимает / возвращает const_iterators
. Я просто не могу понять, почему, поскольку из того, что я видел, эти алгоритмы не могли изменить объект, на который ссылается итератор.
Вот как задокументировано std::find
в реализации SGI:
Возвращает первый итератор i в
диапазон [первый, последний) такой, что * i ==
значение. Возвращает последний, если нет такого
итератор существует.