@specsoftdev live:.cid.8e17e9b93cabb607 specsoftdev@gmail.com
std::merge
Актуально для C++23.

#include <algorithm>
Актуально на 2024-03-15.



Define overload #1
template<class InputIterator1, class InputIterator2, class OutputIterator>
constexpr OutputIterator
merge(InputIterator1 first1, InputIterator1 last1,
      InputIterator2 first2, InputIterator2 last2, OutputIterator result);

Объединяет отсортированные диапазоны [first1, last1] и [first2, last2], копируя результат в result.
Перед копированием элементы сравниваются с помощью оператора "<".
Вернёт OutputIterator итератор result увеличенный на количество скопированных элементов.
Алгоритм является стабильным; элемент из first1 будет скопирован прежде элемента из first2, если они равны.
Example, possible implementation
Define overload #2
template<class ExecutionPolicy, class ForwardIterator1,
         class ForwardIterator2, class ForwardIterator>
ForwardIterator
merge(ExecutionPolicy&& exec, ForwardIterator1 first1, ForwardIterator1 last1,
      ForwardIterator2 first2, ForwardIterator2 last2, ForwardIterator result);


TODO
Example, possible implementation
Define overload #3
template<class InputIterator1, class InputIterator2,
         class OutputIterator, class Compare>
constexpr OutputIterator
merge(InputIterator1 first1, InputIterator1 last1,
      InputIterator2 first2, InputIterator2 last2,
      OutputIterator result, Compare comp);

Объединяет отсортированные диапазоны [first1, last1] с [first2, last2], копируя результат в result.
Перед копированием элементы сравниваются с помощью бинарного предиката "comp".
Вернёт OutputIterator итератор за последним скопированным элементом.
Алгоритм является стабильным; элемент из first1 будет скопирован прежде элемента из first2, если они равны.
Example, possible implementation
Define overload #4
template<class ExecutionPolicy, class ForwardIterator1, class ForwardIterator2,
         class ForwardIterator, class Compare>
ForwardIterator
merge(ExecutionPolicy&& exec,ForwardIterator1 first1, ForwardIterator1 last1,
      ForwardIterator2 first2, ForwardIterator2 last2,
      ForwardIterator result, Compare comp);

TODO
Example, possible implementation



Examples


Example 1:
#include <iostream>
#include <algorithm>
#include <string>

int main()
{
    std::string str1 = "cdefg";
    std::string str2 = "сghi";
    std::string result;
    result.resize(10);

    // скопирует элементы из str1 и str2 в result.
    auto it = std::merge(std::begin(str1), std::end(str1),
                         std::begin(str2), std::end(str2),
                         result.begin());
    std::cout << result << std::endl;
    return 0;
}

сcdefghig



Changelog

C++26
TODO
C++23
TODO
C++20
TODO
C++17
TODO
C++14
TODO
C++11
TODO


See also

TODO

This page was last modified on 2024-03-15