|
libhatchet
|
Go to the source code of this file.
Classes | |
| class | hxminmax_result< iterator_t_ > |
Functions | |
| template<hxrandom_range_concept_ range0_t_, hxrandom_range_concept_ range1_t_, typename output_iterator_t_, typename less_t_> | |
| HX_NS_BEGIN_ constexpr output_iterator_t_ | hxmerge (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_, const less_t_ &less_) noexcept |
| template<hxsorted_range_concept_ range0_t_, hxsorted_range_concept_ range1_t_, typename output_iterator_t_> | |
| constexpr output_iterator_t_ | hxmerge (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_) noexcept |
| template<hxrange_concept_ range_t_, typename less_t_> | |
| constexpr auto | hxminmax (range_t_ &&range_, const less_t_ &less_) -> hxminmax_result< decltype(range_.begin())> |
| template<hxrange_concept_ range_t_> | |
| constexpr auto | hxminmax (range_t_ &&range_) -> hxminmax_result< decltype(range_.begin())> |
| template<hxrandom_range_concept_ range0_t_, hxrandom_range_concept_ range1_t_, typename output_iterator_t_, typename less_t_> | |
| constexpr output_iterator_t_ | hxset_difference (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_, const less_t_ &less_) noexcept |
| template<hxsorted_range_concept_ range0_t_, hxsorted_range_concept_ range1_t_, typename output_iterator_t_> | |
| constexpr output_iterator_t_ | hxset_difference (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_) noexcept |
| template<hxrandom_range_concept_ range0_t_, hxrandom_range_concept_ range1_t_, typename output_iterator_t_, typename less_t_> | |
| constexpr output_iterator_t_ | hxset_intersection (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_, const less_t_ &less_) noexcept |
| template<hxsorted_range_concept_ range0_t_, hxsorted_range_concept_ range1_t_, typename output_iterator_t_> | |
| constexpr output_iterator_t_ | hxset_intersection (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_) noexcept |
| template<hxrandom_range_concept_ range0_t_, hxrandom_range_concept_ range1_t_, typename output_iterator_t_, typename less_t_> | |
| constexpr output_iterator_t_ | hxset_union (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_, const less_t_ &less_) noexcept |
| template<hxsorted_range_concept_ range0_t_, hxsorted_range_concept_ range1_t_, typename output_iterator_t_> | |
| constexpr output_iterator_t_ | hxset_union (range0_t_ &&range0_, range1_t_ &&range1_, output_iterator_t_ &&output_) noexcept |
| template<hxrandom_iterator_concept_ iterator_t_, typename equal_t_> | |
| constexpr iterator_t_ | hxunique (iterator_t_ begin_, iterator_t_ end_, const equal_t_ &equal_) noexcept |
| template<hxsorted_iterator_concept_ iterator_t_> | |
| constexpr iterator_t_ | hxunique (iterator_t_ begin_, iterator_t_ end_) noexcept |
Random iterator based set algorithms.
Includes support for callables when defining custom key operations. Otherwise T::operator<(const T&) and T::operator==(const T&) are used. The other relational operators are not used.
See hxrange.hpp for range algorithms. See hxsort.hpp for sorting algorithms including hxinsertion_sort, hxheapsort and hxsort.
|
inlineconstexprnoexcept |
hxmerge (specialization) - An overload of hxmerge that uses hxkey_less to order range0 and range1.
Requires a random-iterator.
|
inlineconstexprnoexcept |
hxmerge - Performs a stable merge of the two ordered ranges range0 and range1 -> output.
The input ranges must not overlap each other or the destination array. Elements are copy-assigned out of an input range passed as an l-value and move-assigned out of an input range passed as an r-value. Passing a hxvector as an output iterator like this hxmerge<const int*, hxvector<int>&>(...) will append to the array. Assumes both range0 and range1 are ordered by the less callable. Returns an output iterator positioned one past the last element written. Requires a random-iterator.
|
inlineconstexpr |
hxminmax (specialization) - An overload of hxminmax that uses hxkey_less over range.
Requires a forward-iterator.
|
inlineconstexpr |
hxminmax - Returns an hxminmax_result with iterators to the smallest and largest elements in range as determined by less.
Both min and max equal range.end() for an empty range. When multiple elements compare equal and minimal, the first is returned. When multiple elements compare equal and maximal, the first is returned. The less callable defines the less-than ordering relationship. Requires a forward-iterator.
|
inlineconstexprnoexcept |
hxset_difference (specialization) - An overload of hxset_difference that uses hxkey_less to order range0 and range1.
Requires a random-iterator.
|
inlineconstexprnoexcept |
hxset_difference - Forms the difference of the two ordered ranges range0 and range1 into output.
The output contains keys that appear in the first range but not the second. The input ranges must not overlap each other or the destination array. Elements from the first range are copy-assigned into the output if range0 is an l-value and move-assigned if it is an r-value. Passing a hxvector as an output iterator like this hxset_difference<const int*, hxvector<int>&>(...) will append to the array. Assumes both ranges are ordered by the less callable. Returns an output iterator positioned one past the last element written. Requires a random-iterator.
|
inlineconstexprnoexcept |
hxset_intersection (specialization) - An overload of hxset_intersection that uses hxkey_less to order range0 and range1.
Requires a random-iterator.
|
inlineconstexprnoexcept |
hxset_intersection - Forms the intersection of the two ordered ranges range0 and range1 into output.
Only keys present in both ranges appear in the output. The input ranges must not overlap each other or the destination array. Elements from the first range are copy-assigned into the output if range0 is an l-value and move-assigned if it is an r-value. Passing a hxvector as an output iterator like this hxset_intersection<const int*, hxvector<int>&>(...) will append to the array. Assumes both ranges are ordered by the less callable. Returns an output iterator positioned one past the last element written. Requires a random-iterator.
|
inlineconstexprnoexcept |
hxset_union (specialization) - An overload of hxset_union that uses hxkey_less to order range0 and range1.
Requires a random-iterator.
|
inlineconstexprnoexcept |
hxset_union - Forms the union of the two ordered ranges range0 and range1 into output.
A key appearing m times in the first range and n times in the second appears max(m, n) times in the output. The input ranges must not overlap each other or the destination array. Elements are copy-assigned out of an input range passed as an l-value and move-assigned out of an input range passed as an r-value. Passing a hxvector as an output iterator like this hxset_union<const int*, hxvector<int>&>(...) will append to the array. Assumes both ranges are ordered by the less callable. Returns an output iterator positioned one past the last element written. Requires a random-iterator.
|
inlineconstexprnoexcept |
hxunique (specialization) - An overload of hxunique that uses hxkey_equal over the range [begin, end).
Requires a random-iterator.
|
inlineconstexprnoexcept |
hxunique - Removes consecutive duplicate elements from the range [begin, end) using equal to identify duplicates.
Elements are moved into place using move-assignment. Returns an iterator to the new end of the range. Elements past the returned iterator are in a valid but unspecified state. The range must be sorted to remove all duplicates. The equal callable returns true when two elements are considered equal. Requires a random-iterator.