Espacios de nombres
Variantes
Acciones

std::set_union

De cppreference.com
< cpp‎ | algorithm
 
 
Biblioteca de algoritmos
Políticas de ejecución (C++17)
Operaciones de secuencia no modificantes
(C++11)(C++11)(C++11)
(C++17)
Operaciones de secuencia modificantes
Operaciones en almacenamiento no inicializado
Operaciones de partición
Operaciones de ordenación
Operaciones de búsqueda binaria
Operaciones de conjuntos (en rangos ordenados)
Operaciones de pila
(C++11)
Operaciones mínimo/máximo
(C++11)
(C++17)
Permutaciones
Operaciones numéricas
Bibliotecas C
 
Definido en el archivo de encabezado <algorithm>
template<class InputIt1, class InputIt2, class OutputIt >

OutputIt set_union( InputIt1 first1, InputIt1 last1,
                    InputIt2 first2, InputIt2 last2,

                    OutputIt d_first );
(1)
template<class InputIt1, class InputIt2,

          class OutputIt, class Compare >
OutputIt set_union( InputIt1 first1, InputIt1 last1,
                    InputIt2 first2, InputIt2 last2,

                    OutputIt d_first, Compare comp );
(2)
Construye un principio gama ordenados en d_first que consiste de todos los elementos presentes en uno o ambos rangos según [first1, last1) y [first2, last2). La primera versión espera tanto de entrada va a ser resuelto con operator<, la segunda versión espera que se solucionó con la comparación comp función dada. Si algún elemento se encuentra m veces en [first1, last1) y n veces en [first2, last2), entonces todos los elementos m se copiarán desde [first1, last1) a d_first, preservar el orden y haga exactamente std::max(n-m, 0) elementos se copiarán desde [first2, last2) a d_first, también preservar el orden. El rango resultante no se puede solapar con cualquiera de los rangos de entrada .
Original:
Constructs a sorted range beginning at d_first consisting of all elements present in one or both sorted ranges [first1, last1) and [first2, last2). The first version expects both input ranges to be sorted with operator<, the second version expects them to be sorted with the given comparison function comp. If some element is found m times in [first1, last1) and n times in [first2, last2), then all m elements will be copied from [first1, last1) to d_first, preserving order, and then exactly std::max(n-m, 0) elements will be copied from [first2, last2) to d_first, also preserving order. The resulting range cannot overlap with either of the input ranges.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Contenido

[editar]Parámetros

first1, last1 -
la primera entrada ordenados rango
Original:
the first input sorted range
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
first2, last2 -
la segunda entrada ordenada rango
Original:
the second input sorted range
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
comp - objeto función de comparación (es decir, un objeto que satisface los requerimientos de Compare) que devuelve ​true si el primer argumento es menor que el segundo.

La signatura de la función de comparación deberá ser equivalente a lo siguiente:

 bool cmp(const Type1 &a, const Type2 &b);

Mientras que la signatura no necesita ser const&, la función no debe modificar los objetos que se le pasaron y debe admitir todos los valores de los tipos (posiblemente const) Type1 y Type2 a pesar de la categoría de valor (por consiguiente, no se permite a Type1 &, ni tampoco a Type1 a menos que para Type1 un movimiento sea equivalente a una copia(desde C++11)).
Los tipos Type1 y Type2 deben ser tales que objetos de tipo InputIt1 y InputIt2 pueden ser desreferenciados y luego convertidos implícitamente a Type1 and Type2 respectively. ​

Requisitos de tipo
-
InputIt1 debe reunir los requerimientos de InputIterator.
-
InputIt2 debe reunir los requerimientos de InputIterator.
-
OutputIt debe reunir los requerimientos de OutputIterator.

[editar]Valor de retorno

Iterator allá del final de la rango construido .
Original:
Iterator past the end of the constructed range.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar]Complejidad

En la mayoría de las comparaciones 2·(N1+N2-1), donde N1=std::distance(first1, last1) y N2=std::distance(first2, last2) .
Original:
At most 2·(N1+N2-1) comparisons, where N1=std::distance(first1, last1) and N2=std::distance(first2, last2).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar]Posible implementación

Primera versión
template<class InputIt1, class InputIt2, class OutputIt> OutputIt set_union(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first){for(; first1 != last1;++d_first){if(first2 == last2)returnstd::copy(first1, last1, d_first);if(*first2 <*first1){*d_first =*first2++;}else{*d_first =*first1;if(!(*first1 <*first2))++first2;++first1;}}returnstd::copy(first2, last2, d_first);}
Segunda versión
template<class InputIt1, class InputIt2, class OutputIt, class Compare> OutputIt set_union(InputIt1 first1, InputIt1 last1, InputIt2 first2, InputIt2 last2, OutputIt d_first, Compare comp){for(; first1 != last1;++d_first){if(first2 == last2)returnstd::copy(first1, last1, d_first);if(comp(*first2, *first1)){*d_first =*first2++;}else{*d_first =*first1;if(!comp(*first1, *first2))++first2;++first1;}}returnstd::copy(first2, last2, d_first);}

[editar]Ejemplo

[editar]Ver también

Devuelve true si una secuencia es una subsecuencia de otra.
(plantilla de función)[editar]
Calcula la diferencia entre dos conjuntos.
(plantilla de función)[editar]
Calcula la intersección de dos conjuntos.
(plantilla de función)[editar]
Calcula la diferencia simétrica entre dos conjuntos.
(plantilla de función)[editar]
close