В документации Boost.Range отсутствуют следующие алгоритмы (с использованием той же классификации, что и в документации по стандарту и диапазону):
Другими словами, Boost.Range реализует почти все C ++ 03 <algorithm>
(тоже немного <numeric>
, я не проверял), плюс даже некоторые из C ++ 11, такие как copy_n
и is_sorted
которые явно отсутствовали. Некоторые из отсутствующих вещей не связаны с диапазоном, например min
, max
и minmax
(которые работают с двумя элементами или одним списком элементов инициализатора) и iter_swap
(который работает с двумя итераторами). Есть также ошибки документации, поскольку partial_sort_copy
действительно , кажется, здесь. Никаких кубиков на generate_n
, который, похоже, является нашим единственным неудачником.
Кроме того, использование этих алгоритмов описано:
В своей самой простой форме Алгоритм диапазона (или алгоритм на основе диапазона) - это просто алгоритм на основе итератора, в котором два аргумента итератора были заменены одним аргументом диапазона.
с сопровождающим примером:
std::vector<int> vec = ...;
boost::sort(vec);
// instead of:
// std::sort(vec.begin(), vec.end());
Одним из основных отличий является возвращаемое значение, при котором замены стандартных алгоритмов, которые возвращают один итератор, могут вместо этого возвращать диапазон или один итератор в зависимости от потребностей пользователя. Подробности доступны на той же странице и в документации каждого отдельного алгоритма. Есть и примеры.
Я думаю, что вы очень плохо читали документацию.