std::inplace_merge - cppreference.com
De cppreference.com
<metanoindex/>
<tbody> </tbody>
| Definido no cabeçalho <algorithm> |
||
|
|
(1) | |
|
|
(2) | |
Mescla duas faixas consecutivas classificadas [first, middle) e [middle, last) em um [first, last) intervalo classificado. A ordem dos elementos iguais é garantido para ser preservado. A primeira versão utiliza operator< para comparar os elementos, a segunda versão utiliza a função de comparação dada comp.
Original:
Merges two consecutive sorted ranges [first, middle) and [middle, last) into one sorted range [first, last). The order of equal elements is guaranteed to be preserved. The first version uses operator< to compare the elements, the second version uses the given comparison function comp.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Parâmetros
| first | - | o começo do primeiro intervalo de classificação Original: the beginning of the first sorted range The text has been machine-translated via Google Translate. |
| middle | - | o fim do primeiro intervalo ordenadas e o início do segundo Original: the end of the first sorted range and the beginning of the second The text has been machine-translated via Google Translate. |
| last | - | no final do segundo intervalo de classificação Original: the end of the second sorted range The text has been machine-translated via Google Translate. |
| comp | - | comparison function which returns true if the first argument is less than the second.
The signature of the comparison function should be equivalent to the following:
The signature does not need to have |
| Type requirements | ||
-BidirIt must meet the requirements of ValueSwappable and BidirectionalIterator.
| ||
-The type of dereferenced BidirIt must meet the requirements of MoveAssignable and MoveConstructible.
| ||
Valor de retorno
(Nenhum)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Complexidade
Exatamente N-1 comparações se a memória adicional suficiente disponível, caso contrário N·log(N) onde N = std::distance(first, last).
Original:
Exactly N-1 comparisons if enough additional memory is available, otherwise N·log(N) where N = std::distance(first, last).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Notas
Esta função tenta alocar um buffer temporário, normalmente chamando std::get_temporary_buffer. Se a alocação falhar, o algoritmo menos eficiente é escolhido.
Original:
This function attempts to allocate a temporary buffer, typically by calling std::get_temporary_buffer. If the allocation fails, the less efficient algorithm is chosen.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Exemplo
O código a seguir é uma implementação do merge sort .
Original:
The following code is an implementation of merge sort.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
#include <vector> #include <iostream> #include <algorithm> template<class Iter> void merge_sort(Iter first, Iter last) { if (last - first > 1) { Iter middle = first + (last - first) / 2; merge_sort(first, middle); merge_sort(middle, last); std::inplace_merge(first, middle, last); } } int main() { std::vector<int> v{8, 2, -2, 0, 11, 11, 1, 7, 3}; merge_sort(v.begin(), v.end()); for(auto n : v) { std::cout << n << ' '; } std::cout << '\n'; }
Saída:
Veja também
funde duas faixas de classificados Original: merges two sorted ranges The text has been machine-translated via Google Translate. (modelo de função) [edit] | |
tipo um intervalo em ordem crescente Original: sorts a range into ascending order The text has been machine-translated via Google Translate. (modelo de função) [edit] | |
Classifica um intervalo de elementos preservando ordem entre elementos iguais Original: sorts a range of elements while preserving order between equal elements The text has been machine-translated via Google Translate. (modelo de função) [edit] | |