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
TODOC++23
TODOC++20
TODOC++17
TODOC++14
TODOC++11
TODOSee also
TODO
This page was last modified on 2024-03-15