| 36 | |
| 37 | template <typename Iterator, typename Compare> |
| 38 | void push_heap(Iterator first, Iterator last, Compare comp) { |
| 39 | auto pos = last - 1; |
| 40 | auto parent = first + ((pos - first) - 1) / 2; |
| 41 | |
| 42 | while (pos > first && comp(*parent, *pos)) { |
| 43 | auto tmp = *parent; |
| 44 | *parent = *pos; |
| 45 | *pos = tmp; |
| 46 | |
| 47 | pos = parent; |
| 48 | parent = first + ((pos - first) - 1) / 2; |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | template <typename Iterator> void push_heap(Iterator first, Iterator last) { |
| 53 | using value_type = typename fl::remove_reference<decltype(*first)>::type; |
no outgoing calls
no test coverage detected