copy(from, to)
, чем copy(from.begin(), from.end(), make_back_inserter(to))
. Да и вернуть диапазон вместо пары итераторов гораздо удобнее:encode(substring());вместо
pair<iterator, iterator> sub(substring());Помню как-то читал как Александреску в языке D активно продвигает диапазоны вообще на замену итераторам. Можно так критично не относиться к итераторам, но я при написании кода вовсю стараюсь специализировать алгоритмы не только для итераторов, но и диапазонов. Алгоритмы в Boost, кстати, тоже очень range-friendly.
encode(sub.first, sub.second);
И очень правильный шаг в этом направлении - [Boost.]RangeEx. Эта библиотека позволяет сильно упростить код, который до этого использовал итераторы. Конечно, раньше кое-как спасал Boost.Iterators, но код был не в пример этому:
boost::copy(rng |Синтакис очень знаком:
boost::adaptors::filtered(pred) |
boost::adaptors::unique,
out)
ls | grep ".xml" | wc -l
Вобщем, я очень проникся и вам советую попробовать.