std::forward_list<T,Allocator>:: merge
|
void
merge
(
forward_list
&
other
)
;
|
(1) |
(desde C++11)
(constexpr desde C++26) |
|
void
merge
(
forward_list
&&
other
)
;
|
(2) |
(desde C++11)
(constexpr desde C++26) |
|
template
<
class
Compare
>
void merge ( forward_list & other, Compare comp ) ; |
(3) |
(desde C++11)
(constexpr desde C++26) |
|
template
<
class
Compare
>
void merge ( forward_list && other, Compare comp ) ; |
(4) |
(desde C++11)
(constexpr desde C++26) |
Combina dos listas ordenadas en una lista ordenada.
- Si other se refiere al mismo objeto que * this , no hace nada.
- De lo contrario, transfiere todos los elementos de other a * this . other queda vacío después de la fusión.
Esta operación es estable:
- Para elementos equivalentes en las dos listas, los elementos de * this siempre preceden a los elementos de other .
- El orden de los elementos equivalentes de * this y other no cambia.
- * this o other no está ordenado con respecto al comparador comp .
- get_allocator ( ) == other. get_allocator ( ) es false .
No se invalidan iteradores ni referencias. Los punteros y referencias a los elementos movidos desde * this , así como los iteradores que se refieren a estos elementos, referirán a los mismos elementos de * this , en lugar de other .
Contenido
Parámetros
Valor de retorno(ninguno) ExcepcionesSi se lanza una excepción por cualquier razón, estas funciones no tienen efecto ( strong exception safety guarantee ). Excepto si la excepción proviene de una comparación. ComplejidadSi other se refiere al mismo objeto que * this , no se realizan comparaciones. De lo contrario, dado N 1 como std:: distance ( begin ( ) , end ( ) ) y N 2 como std:: distance ( other. begin ( ) , other. end ( ) ) :
1,2)
Como máximo
N
1
+N
2
-1
comparaciones usando
operator
<
.
3,4)
Como máximo
N
1
+N
2
-1
aplicaciones de la función de comparación
comp
.
Ejemplo
Ejecutar este código
#include <iostream> #include <forward_list> std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list) { for (const int i : list) ostr << ' ' << i; return ostr; } int main() { std::forward_list<int> list1 = {5, 9, 1, 3, 3}; std::forward_list<int> list2 = {8, 7, 2, 3, 4, 4}; list1.sort(); list2.sort(); std::cout << "list1: " << list1 << '\n'; std::cout << "list2: " << list2 << '\n'; list1.merge(list2); std::cout << "merged:" << list1 << '\n'; } Salida: list1: 1 3 3 5 9 list2: 2 3 4 4 7 8 merged: 1 2 3 3 3 4 4 5 7 8 9 Informes de defectosLos siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
Véase también
| ||||||||||||||||||||||||||||||||||||