diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index 8b681441451..97fc1f626bc 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -811,5 +811,41 @@ OutputIt setUnionMerge(InputIt1 first1, std::less{}); } +template +OutputContainer setUnionMerge(InputContainer1 &&input1, + InputContainer2 &&input2, + Merge merge, + Compare comp) +{ + OutputContainer results; + results.reserve(input1.size() + input2.size()); + setUnionMerge(std::make_move_iterator(std::begin(input1)), + std::make_move_iterator(std::end(input1)), + std::make_move_iterator(std::begin(input2)), + std::make_move_iterator(std::end(input2)), + std::back_inserter(results), + merge, + comp); + + return results; +} + +template +OutputContainer setUnionMerge(InputContainer1 &&input1, + InputContainer2 &&input2, + Merge merge) +{ + return setUnionMerge(std::forward(input1), + std::forward(input2), + merge, + std::less{}); +} } // namespace Utils