diff options
Diffstat (limited to 'boost/compute/algorithm/equal_range.hpp')
-rw-r--r-- | boost/compute/algorithm/equal_range.hpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/boost/compute/algorithm/equal_range.hpp b/boost/compute/algorithm/equal_range.hpp new file mode 100644 index 0000000000..fd82177324 --- /dev/null +++ b/boost/compute/algorithm/equal_range.hpp @@ -0,0 +1,42 @@ +//---------------------------------------------------------------------------// +// Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com> +// +// Distributed under the Boost Software License, Version 1.0 +// See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt +// +// See http://boostorg.github.com/compute for more information. +//---------------------------------------------------------------------------// + +#ifndef BOOST_COMPUTE_ALGORITHM_EQUAL_RANGE_HPP +#define BOOST_COMPUTE_ALGORITHM_EQUAL_RANGE_HPP + +#include <utility> + +#include <boost/compute/system.hpp> +#include <boost/compute/command_queue.hpp> +#include <boost/compute/algorithm/lower_bound.hpp> +#include <boost/compute/algorithm/upper_bound.hpp> + +namespace boost { +namespace compute { + +/// Returns a pair of iterators containing the range of values equal +/// to \p value in the sorted range [\p first, \p last). +template<class InputIterator, class T> +inline std::pair<InputIterator, InputIterator> +equal_range(InputIterator first, + InputIterator last, + const T &value, + command_queue &queue = system::default_queue()) +{ + return std::make_pair( + ::boost::compute::lower_bound(first, last, value, queue), + ::boost::compute::upper_bound(first, last, value, queue) + ); +} + +} // end compute namespace +} // end boost namespace + +#endif // BOOST_COMPUTE_ALGORITHM_EQUAL_RANGE_HPP |