4#ifndef TETL_ALGORITHM_INPLACE_MERGE_HPP
5#define TETL_ALGORITHM_INPLACE_MERGE_HPP
7#include <etl/_algorithm/move_backward.hpp>
8#include <etl/_functional/less.hpp>
9#include <etl/_utility/move.hpp>
25template <
typename BidirIt,
typename Compare>
26constexpr auto inplace_merge(BidirIt begin, BidirIt mid, BidirIt end, Compare comp) ->
void
30 while (left != mid
and right != end) {
31 if (comp(*right, *left)) {
32 auto value =
etl::move(*right);
33 etl::move_backward(left, mid, mid + 1);
34 *left =
etl::move(value);
44template <
typename BidirIt>
45constexpr auto inplace_merge(BidirIt first, BidirIt mid, BidirIt last) ->
void
47 etl::inplace_merge(first, mid, last,
etl::
less());
constexpr auto inplace_merge(BidirIt first, BidirIt mid, BidirIt last) -> void
Definition inplace_merge.hpp:45
constexpr auto inplace_merge(BidirIt begin, BidirIt mid, BidirIt end, Compare comp) -> void
Merges two consecutive sorted ranges [first, middle) and [middle, last) into one sorted range [first,...
Definition inplace_merge.hpp:26
Definition adjacent_find.hpp:9
Function object for performing comparisons. Unless specialised, invokes operator< on type T....
Definition less.hpp:15