mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-14 15:04:09 +00:00
fix recursion depth: is_heap, is_heap_until
This commit is contained in:
parent
0201107eec
commit
86f68671a1
5 changed files with 232 additions and 21 deletions
|
@ -1,24 +1,33 @@
|
|||
#ifndef SPROUT_ALGORITHM_IS_HEAP_HPP
|
||||
#define SPROUT_ALGORITHM_IS_HEAP_HPP
|
||||
|
||||
#include <iterator>
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/algorithm/is_heap_until.hpp>
|
||||
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT
|
||||
|
||||
namespace sprout {
|
||||
// Copyright (C) 2011 RiSK (sscrisk)
|
||||
|
||||
// 25.4.6.5 is_heap
|
||||
template<typename RandomAccessIterator>
|
||||
inline SPROUT_CONSTEXPR bool
|
||||
is_heap(RandomAccessIterator first, RandomAccessIterator last) {
|
||||
return sprout::is_heap_until(first, last) == last;
|
||||
}
|
||||
|
||||
//
|
||||
// recursion depth:
|
||||
// O(log N)
|
||||
//
|
||||
template<typename RandomAccessIterator, typename Compare>
|
||||
inline SPROUT_CONSTEXPR bool
|
||||
is_heap(RandomAccessIterator first, RandomAccessIterator last, Compare comp) {
|
||||
return sprout::is_heap_until(first, last, comp) == last;
|
||||
}
|
||||
|
||||
template<typename RandomAccessIterator>
|
||||
inline SPROUT_CONSTEXPR bool
|
||||
is_heap(RandomAccessIterator first, RandomAccessIterator last) {
|
||||
return sprout::is_heap(
|
||||
first, last,
|
||||
NS_SSCRISK_CEL_OR_SPROUT::less<typename std::iterator_traits<RandomAccessIterator>::value_type>()
|
||||
);
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_ALGORITHM_IS_HEAP_HPP
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue