|
Go to the documentation of this file.
9 #ifndef ADOBE_ALGORITHM_SET_HPP
10 #define ADOBE_ALGORITHM_SET_HPP
14 #include <boost/range/begin.hpp>
15 #include <boost/range/end.hpp>
16 #include <boost/bind.hpp>
42 template < class InputRange1, class InputRange2>
43 inline bool includes( const InputRange1& range1, const InputRange2& range2)
45 return std::includes( boost::begin(range1), boost::end(range1),
46 boost::begin(range2), boost::end(range2));
54 template < class InputIterator1, class InputIterator2, class Compare>
55 inline bool includes( InputIterator1 first1, InputIterator1 last1,
56 InputIterator2 first2, InputIterator2 last2,
60 return std::includes(first1, last1, first2, last2, boost::bind(comp, _1, _2));
68 template < class InputRange1, class InputRange2, class Compare>
69 inline bool includes( const InputRange1& range1, const InputRange2& range2, Compare comp)
72 boost::begin(range2), boost::end(range2),
81 template < class InputRange1, class InputRange2, class OutputIterator>
82 inline OutputIterator set_union( const InputRange1& range1, const InputRange2& range2, OutputIterator result)
85 boost::begin(range2), boost::end(range2),
94 template < class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
95 inline OutputIterator set_union(InputIterator1 first1, InputIterator1 last1,
96 InputIterator2 first2, InputIterator2 last2,
97 OutputIterator result, Compare comp)
99 return std::set_union(first1, last1, first2, last2, result, boost::bind(comp, _1, _2));
107 template < class InputRange1, class InputRange2, class OutputIterator, class Compare>
108 inline OutputIterator set_union( const InputRange1& range1, const InputRange2& range2, OutputIterator result, Compare comp)
111 boost::begin(range2), boost::end(range2),
120 template < class InputRange1, class InputRange2, class OutputIterator>
121 inline OutputIterator set_intersection( const InputRange1& range1, const InputRange2& range2, OutputIterator result)
124 boost::begin(range2), boost::end(range2),
133 template < class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
135 InputIterator2 first2, InputIterator2 last2,
136 OutputIterator result, Compare comp)
146 template < class InputRange1, class InputRange2, class OutputIterator, class Compare>
147 inline OutputIterator set_intersection( const InputRange1& range1, const InputRange2& range2, OutputIterator result, Compare comp)
150 boost::begin(range2), boost::end(range2),
159 template < class InputRange1, class InputRange2, class OutputIterator>
160 inline OutputIterator set_difference( const InputRange1& range1, const InputRange2& range2, OutputIterator result)
163 boost::begin(range2), boost::end(range2),
172 template < class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
173 inline OutputIterator set_difference( InputIterator1 first1, InputIterator1 last1,
174 InputIterator2 first2, InputIterator2 last2,
175 OutputIterator result, Compare comp)
177 return std::set_difference(first1, last1, first2, last2, result, boost::bind(comp, _1, _2));
185 template < class InputRange1, class InputRange2, class OutputIterator, class Compare>
186 inline OutputIterator set_difference( const InputRange1& range1, const InputRange2& range2, OutputIterator result, Compare comp)
189 boost::begin(range2), boost::end(range2),
198 template < class InputRange1, class InputRange2, class OutputIterator>
202 boost::begin(range2), boost::end(range2),
211 template < class InputIterator1, class InputIterator2, class OutputIterator, class Compare>
213 InputIterator2 first2, InputIterator2 last2,
214 OutputIterator result, Compare comp)
224 template < class InputRange1, class InputRange2, class OutputIterator, class Compare>
225 inline OutputIterator set_symmetric_difference( const InputRange1& range1, const InputRange2& range2, OutputIterator result, Compare comp)
228 boost::begin(range2), boost::end(range2),
|