1 /////////////////////////////////////////////////////////////////////////////// 2 /// \file algorithm.hpp 3 /// Includes the range-based versions of the algorithms in the 4 /// C++ standard header file <algorithm> 5 // 6 ///////////////////////////////////////////////////////////////////////////// 7 8 // Copyright 2009 Neil Groves. 9 // Distributed under the Boost Software License, Version 1.0. (See 10 // accompanying file LICENSE_1_0.txt or copy at 11 // http://www.boost.org/LICENSE_1_0.txt) 12 // 13 // Acknowledgements: 14 // This code uses combinations of ideas, techniques and code snippets 15 // from: Thorsten Ottosen, Eric Niebler, Jeremy Siek, 16 // and Vladimir Prus' 17 // 18 // The original mutating algorithms that served as the first version 19 // were originally written by Vladimir Prus' 20 // <ghost@cs.msu.su> code from Boost Wiki 21 22 #if defined(_MSC_VER) 23 #pragma once 24 #endif 25 26 #ifndef BOOST_RANGE_ALGORITHM_HPP_INCLUDED_01012009 27 #define BOOST_RANGE_ALGORITHM_HPP_INCLUDED_01012009 28 29 #include <boost/range/concepts.hpp> 30 #include <boost/range/iterator_range.hpp> 31 #include <boost/range/difference_type.hpp> 32 #include <boost/range/detail/range_return.hpp> 33 #include <boost/iterator/iterator_traits.hpp> 34 #include <boost/next_prior.hpp> 35 #include <algorithm> 36 37 // Non-mutating algorithms 38 #include <boost/range/algorithm/adjacent_find.hpp> 39 #include <boost/range/algorithm/count.hpp> 40 #include <boost/range/algorithm/count_if.hpp> 41 #include <boost/range/algorithm/equal.hpp> 42 #include <boost/range/algorithm/for_each.hpp> 43 #include <boost/range/algorithm/find.hpp> 44 #include <boost/range/algorithm/find_end.hpp> 45 #include <boost/range/algorithm/find_first_of.hpp> 46 #include <boost/range/algorithm/find_if.hpp> 47 #include <boost/range/algorithm/lexicographical_compare.hpp> 48 #include <boost/range/algorithm/mismatch.hpp> 49 #include <boost/range/algorithm/search.hpp> 50 #include <boost/range/algorithm/search_n.hpp> 51 52 // Mutating algorithms 53 #include <boost/range/algorithm/copy.hpp> 54 #include <boost/range/algorithm/copy_backward.hpp> 55 #include <boost/range/algorithm/fill.hpp> 56 #include <boost/range/algorithm/fill_n.hpp> 57 #include <boost/range/algorithm/generate.hpp> 58 #include <boost/range/algorithm/inplace_merge.hpp> 59 #include <boost/range/algorithm/merge.hpp> 60 #include <boost/range/algorithm/nth_element.hpp> 61 #include <boost/range/algorithm/partial_sort.hpp> 62 #include <boost/range/algorithm/partial_sort_copy.hpp> 63 #include <boost/range/algorithm/partition.hpp> 64 #include <boost/range/algorithm/random_shuffle.hpp> 65 #include <boost/range/algorithm/remove.hpp> 66 #include <boost/range/algorithm/remove_copy.hpp> 67 #include <boost/range/algorithm/remove_copy_if.hpp> 68 #include <boost/range/algorithm/remove_if.hpp> 69 #include <boost/range/algorithm/replace.hpp> 70 #include <boost/range/algorithm/replace_copy.hpp> 71 #include <boost/range/algorithm/replace_copy_if.hpp> 72 #include <boost/range/algorithm/replace_if.hpp> 73 #include <boost/range/algorithm/reverse.hpp> 74 #include <boost/range/algorithm/reverse_copy.hpp> 75 #include <boost/range/algorithm/rotate.hpp> 76 #include <boost/range/algorithm/rotate_copy.hpp> 77 #include <boost/range/algorithm/sort.hpp> 78 #include <boost/range/algorithm/stable_partition.hpp> 79 #include <boost/range/algorithm/stable_sort.hpp> 80 #include <boost/range/algorithm/transform.hpp> 81 #include <boost/range/algorithm/unique.hpp> 82 #include <boost/range/algorithm/unique_copy.hpp> 83 84 // Binary search 85 #include <boost/range/algorithm/binary_search.hpp> 86 #include <boost/range/algorithm/equal_range.hpp> 87 #include <boost/range/algorithm/lower_bound.hpp> 88 #include <boost/range/algorithm/upper_bound.hpp> 89 90 // Set operations of sorted ranges 91 #include <boost/range/algorithm/set_algorithm.hpp> 92 93 // Heap operations 94 #include <boost/range/algorithm/heap_algorithm.hpp> 95 96 // Minimum and Maximum 97 #include <boost/range/algorithm/max_element.hpp> 98 #include <boost/range/algorithm/min_element.hpp> 99 100 // Permutations 101 #include <boost/range/algorithm/permutation.hpp> 102 103 #endif // include guard 104 105