Combinar operaciones usando STL en C++ | fusionar(), incluye(), establecer_unión(), establecer_intersection(), establecer_diferencia(), ., inplace_merge,

Algunas de las clases de operaciones de combinación se proporcionan en C++ STL bajo el archivo de encabezado «algoritmo», lo que facilita varias operaciones de combinación de manera sencilla. 
Algunos de ellos se mencionan a continuación. 
 

  1. fusionar (beg1, end1, beg2, end2, beg3) : – Esta función fusiona dos contenedores ordenados y los almacena en un nuevo contenedor en orden ordenado (clasificación por fusión). Toma 5 argumentos, primer y último iterador del primer contenedor, primer y último iterador del segundo contenedor y primer iterador del contenedor resultante. 
     
  2. incluye (beg1, end1, beg2, end2) : – Esta función se usa para verificar si los elementos de un contenedor ordenado incluyen otros elementos de contenedor ordenados o no. Devuelve verdadero si el primer contenedor incluye el segundo contenedor; de lo contrario, devuelve falso.
     

CPP

// C++ code to demonstrate the working of
// merge() and include()
#include<iostream>
#include<algorithm> // merge operations
#include<vector> // for vector
using namespace std;
int main()
{
 // Initializing 1st vector
 vector<int> v1 = {1, 3, 4, 5, 20, 30};
     
 // Initializing 2nd vector
 vector<int> v2 = {1, 5, 6, 7, 25, 30};
     
 // Declaring resultant vector
 // for merging
 vector<int> v3(12);
     
 // Using merge() to merge vectors v1 and v2
 // and storing result in v3
 merge(v1.begin(), v1.end(), v2.begin(),
                   v2.end(), v3.begin());
     
 // Displaying resultant container
 cout << "The new container after merging is :\n";
 for (int &x : v3)
     cout << x << " ";
 cout << endl;
  
 // Initializing new vector
 vector<int> v4 = {1, 3, 4, 5, 6, 20, 25, 30};
  
 // Using include() to check if v4 contains v1
 includes(v4.begin(), v4.end(), v1.begin(), v1.end())?
        cout << "v4 includes v1":
        cout << "v4 does'nt include v1";
  
 return 0;   
}
  1. Producción 
     
The new container after merging is :
1 1 3 4 5 5 6 7 20 25 30 30 
v4 includes v1
  1.  
  2. inplace_merge (beg1, beg2, end): – Esta función se usa para ordenar dos rangos ordenados colocados consecutivamente en un solo contenedor. Toma 3 argumentos, iterador al comienzo del primer rango ordenado, iterador al comienzo del segundo rango ordenado e iterador a la última posición.
     

CPP

// C++ code to demonstrate the working of
// inplace_merge()
#include<iostream>
#include<algorithm> // merge operations
#include<vector> // for vector
using namespace std;
int main()
{
  
 // Initializing 1st vector
 vector<int> v1 = {1, 3, 4, 5, 20, 30};
     
 // Initializing 2nd vector
 vector<int> v2 = {1, 5, 6, 7, 25, 30};
     
 // Declaring resultant vector
 // for inplace_merge()
 vector<int> v3(12);
  
 // using copy to copy both vectors into
 // one container
 auto it = copy(v1.begin(), v1.end(), v3.begin());
 copy(v2.begin(), v2.end(), it);
  
 // Using inplace_merge() to sort the container
 inplace_merge(v3.begin(),it,v3.end());
     
 // Displaying resultant container
 cout << "The new container after inplace_merging is :\n";
 for (int &x : v3)
     cout << x << " ";
 cout << endl;
 
 return 0;
     
}
  1. Producción: 
     
The new container after inplace_merging is :
1 1 3 4 5 5 6 7 20 25 30 30 
  1.  
  2. set_union(beg1, end1, beg2, end2, beg3) :- Esta función calcula la unión establecida de dos contenedores y las almacena en un nuevo contenedor. Devuelve el iterador al último elemento del contenedor resultante. Toma 5 argumentos, primer y último iterador del primer contenedor, primer y último iterador del segundo contenedor y primer iterador del contenedor resultante. Los contenedores deben clasificarse y es necesario que el nuevo contenedor se redimensione al tamaño adecuado.
  3. set_intersection(beg1, end1, beg2, end2, beg3) :- Esta función calcula la intersección establecida de dos contenedores y las almacena en un nuevo contenedor. Devuelve el iterador al último elemento del contenedor resultante. Toma 5 argumentos, primer y último iterador del primer contenedor, primer y último iterador del segundo contenedor y primer iterador del contenedor resultante. Los contenedores deben clasificarse y es necesario que el nuevo contenedor se redimensione al tamaño adecuado. 
    Una forma de implementar la unión de conjuntos y la intersección de conjuntos en rangos ordenados se puede encontrar aquí 
     

CPP

// C++ code to demonstrate the working of
// set_union() and set_intersection()
#include<iostream>
#include<algorithm> // for merge operations
#include<vector> // for vector
using namespace std;
int main()
{
 // Initializing 1st vector
 vector<int> v1 = {1, 3, 4, 5, 20, 30};
     
 // Initializing 2nd vector
 vector<int> v2 = {1, 5, 6, 7, 25, 30};
     
 // Declaring resultant vector
 // for union
 vector<int> v3(10);
     
 // Declaring resultant vector
 // for intersection
 vector<int> v4(10);
     
 // using set_union() to compute union  of 2
 // containers v1 and v2 and store result in v3
 auto it = set_union(v1.begin(), v1.end(), v2.begin(),
                              v2.end(), v3.begin());
     
 // using set_intersection() to compute intersection
 // of 2 containers v1 and v2 and store result in v4
 auto it1 = set_intersection(v1.begin(),v1.end(),
               v2.begin(), v2.end(), v4.begin());
     
 // resizing new container
 v3.resize(it - v3.begin());
     
 // resizing new container
 v4.resize(it1 - v4.begin());
     
 // Displaying set union
 cout << "Union of two containers is : ";
 for (int &x : v3)
     cout << x << " ";
 cout << endl;
     
 // Displaying set intersection
 cout << "Intersection of two containers is : ";
 for (int &x : v4)
     cout << x << " ";
 cout << endl;
     
 return 0;   
}
  1. Producción: 
     
Union of two containers is : 1 3 4 5 6 7 20 25 30 
Intersection of two containers is : 1 5 30 
  1.  
  2. set_difference (beg1, end1, beg2, end2, beg3) : – Esta función calcula la diferencia establecida de dos contenedores y las almacena en un nuevo contenedor. Devuelve el iterador al último elemento del contenedor resultante. Toma 5 argumentos, primer y último iterador del primer contenedor, primer y último iterador del segundo contenedor y primer iterador del contenedor resultante. Los contenedores deben clasificarse y es necesario que el nuevo contenedor se redimensione al tamaño adecuado.
  3. s et_symmetric_difference(beg1, end1, beg2, end2, beg3) : – Esta función calcula la diferencia simétrica establecida de dos contenedores y las almacena en un nuevo contenedor. Devuelve el iterador al último elemento del contenedor resultante. Toma 5 argumentos, primer y último iterador del primer contenedor, primer y último iterador del segundo contenedor y primer iterador del contenedor resultante. Los contenedores deben clasificarse y es necesario que el nuevo contenedor se redimensione al tamaño adecuado.
     

CPP

// C++ code to demonstrate the working of
// set_difference() and set_symmetric_difference()
#include<iostream>
#include<algorithm> // for merge operations
#include<vector> // for vector
using namespace std;
int main()
{
 // Initializing 1st vector
 vector<int> v1 = {1, 3, 4, 5, 20, 30};
     
 // Initializing 2nd vector
 vector<int> v2 = {1, 5, 6, 7, 25, 30};
     
 // Declaring resultant vector
 // for difference
 vector<int> v3(10);
     
 // Declaring resultant vector
 // for symmetric_difference
 vector<int> v4(10);
     
     
 // using set_difference() to compute difference
 // of 2 containers v1 and v2.
 auto it = set_difference(v1.begin(), v1.end(),
              v2.begin(), v2.end(), v3.begin());
     
 // using set_symmetric_difference() to compute
 // symmetric_difference/ of 2 containers
 auto it1 = set_symmetric_difference(v1.begin(),
       v1.end(), v2.begin(), v2.end(), v4.begin());
     
 // resizing new container
 v3.resize(it - v3.begin());
     
 // resizing new container
 v4.resize(it1 - v4.begin());
     
 // Displaying set difference
 cout << "Difference of two containers is : ";
 for (int &x : v3)
     cout << x << " ";
 cout << endl;
     
 // Displaying set symmetric_difference
 cout << "symmetric_difference of two containers is : ";
 for (int &x : v4)
     cout << x << " ";
 cout << endl;
     
 return 0;   
}
  1. Producción: 
     
Difference of two containers is : 3 4 20 
Symmetric difference of two containers is : 3 4 6 7 20 25 
  1.  

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *