Re[16]: Оцените решение задачи
От: Evgeny.Panasyuk Россия  
Дата: 15.10.14 18:02
Оценка:
Здравствуйте, slava_phirsov, Вы писали:

EP>>1. Четыре одинаковых итератора тут только в частном случае, а в общем — две пары разных итераторов.

_>Одна беда — поскольку типы итераторов являются параметрами шаблона, то типизация не помешает перепутать эти пары местами.

В таком случае даже Range версия не спасёт
template<class ForwardRange1, class ForwardRange2>
typename range_iterator<ForwardRange1>::type
search(ForwardRange1& rng1, const ForwardRange2& rng2);


_>Что касается конкретно std::search, то ИМХО в большинстве случаев все четыре итератора будут одного типа.


Согласен.

EP>>2. Во всей библиотеке итераторы из одного range принимаются по порядку, запутаться трудно.

_>Однако новички путаются. И даже — страшно сказать — забывают, надо ли ставить первым в паре begin или end. Да, со временем привыкают.

Код-то тестировать (или в крайнем случае проверять на нескольких входных данных вручную) нужно в любом случае, там всё и вылезет. Плюс есть же всякие debug итераторы и алгоритмы.

_>Ну так о том и речь, что ножик-то слишком острый, чтобы намазывать им масло на хлеб, мог бы быть и потупее.


Скоро будет в стандарте. А в библиотеках уже больше 10 лет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.