![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Introduction and motivationBoost , Chapter 1. Range 2.0 , Range Algorithms
В своей самой простой форме алгоритм Range Algorithm (или алгоритм на основе диапазона) - это просто алгоритм на основе итера, где аргументы два итератора были заменены аргументами один. Например, мы можем писать #include <boost/range/algorithm.hpp> #include <vector> std::vector<int> vec = ...; boost::sort(vec); вместо std::sort(vec.begin(), vec.end()); Однако возвратный тип алгоритмов диапазона почти всегда отличается от существующих алгоритмов на основе итератора. Одна группа алгоритмов, таких как boost:unique(boost::sort(vec)); сначала сортировать диапазон, а затем запустить Алгоритмы, такие как Поэтому именно уникальные значения могут быть скопированы путем написания boost::copy(boost::unique(boost::sort(vec)), std::ostream_iterator<int>(std::cout)); Алгоритмы, такие как
Эта функциональность имеет следующие преимущества:
Например, подумайте, как легко мы можем стереть дубликаты в сортированном контейнере: std::vector<int> vec = ...; boost::erase(vec, boost::unique<boost::return_found_end>(boost::sort(vec))); Обратите внимание на использование // assume 'vec' is already sorted std::vector<int>::iterator i = std::unique(vec.begin(), vec.end()); // remember this check or you get into problems if (i != vec.end()) ++i; vec.erase(i, vec.end()); Одна и та же задача может быть выполнена просто с помощью boost::erase(vec, boost::unique<boost::return_next_end>(vec)); и нет необходимости беспокоиться о создании недействительного диапазона. Кроме того, если контейнер является сложным, звонит Статья Introduction and motivation раздела Chapter 1. Range 2.0 Range Algorithms может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Range Algorithms ::
|
||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |