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

_>И есть мнение, что все это можно было сделать проще и безопаснее за счет незначительных накладных расходов.


Например.

_>>>и то, что большинство библиотечных алгоритмов принимают кучку однотипных аргументов (подходя формально — "bad smell" в чистом виде) — это все не есть достоинства.

EP>>Что значит "кучку однотипных аргументов"?
_>
_>template <class ForwardIterator1, class ForwardIterator2>
_>   ForwardIterator1 search (ForwardIterator1 first1, ForwardIterator1 last1,
_>                            ForwardIterator2 first2, ForwardIterator2 last2)
_>

_>4 аргумента. И можно перепутать аргументы местами, и это скомпилируется без проблем. Да, это один из видов "bad smell" — слишком много аргументов.

1. Четыре одинаковых итератора тут только в частном случае, а в общем — две пары разных итераторов.
2. Во всей библиотеке итераторы из одного range принимаются по порядку, запутаться трудно.
3. Какая альтернатива-то? Естественно без потери мощности в общем случае. Есть Boost.Range (или его аналог который войдёт в стандарт) — но это всего лишь оптимизация некоторых частных случаев.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.