Есть ли любой стандартный/фактический стандарт (повышение) обертки вокруг стандартных алгоритмов, которые работают с определением контейнеров, начинаются и заканчиваются. Позвольте мне показать Вам, что я имею в виду с кодом:
// instead of specifying begin and end
std::copy(vector.begin(), vector.end(), output);
// write as
xxx::copy(vector, output);
Я знаю, что это может быть записано легко, но я ищу именно что-то повсеместное.Спасибо.
Есть расширение библиотеки Boost Range, называемое RangeEx, которое содержит обёртки диапазона для всех stl алгоритмов, плюс несколько новых.
Недавно оно было принято в Boost, и поэтому в текущем "официальном" релизе (1.41) его еще нет. Пока это не изменится, вы можете скачать последнюю версию из Boost Vault.
Не знаю, станет ли это когда-нибудь частью стандарта C++, но тот факт, что он находится в Boost, означает, что это будет де-факто стандарт.
Единственный случай, когда я видел нечто подобное - это алгоритмы, основанные на библиотеке boost::range
, но даже они на самом деле не модифицируют стандартные алгоритмы, такие как std::copy
или std::remove_if
- данный алгоритм необходимо написать, чтобы воспользоваться преимуществами такой обертки диапазона.
Для примера смотрите библиотеку Boost String Algorithms.
Следующий стандарт (надеюсь!) изменит это. А пока посмотрите на Boost.Range и его различные варианты использования, хотя я не знаком с интерфейсом к стандартным алгоритмам.
Я добавлю свой собственный поиск: Adobe Source Bianceies (Anythx от Boost Suredsedes Algoritts Part) ASL