std::incluye() en C++ STL

include() es una función de C++ que se puede usar para reconocer si todos los números en un contenedor también existen en otros contenedores. Ayuda a verificar si un conjunto es un subconjunto de otro conjunto o no, considerando que el conjunto está ordenado. Se espera que los elementos estén ordenados. Esta función se define en el archivo de encabezado  <algorithm> .

Hay dos implementaciones posibles y se explican a continuación:

Sintaxis 1: Uso del operador “<“

 Modelo:

template 
  bool includes (initer1 beg1, initer1 end1,
                        initer2 beg2, initer2 end2,)

Parámetros:

  • beg1:  iterador de entrada a la posición inicial de la primera secuencia ordenada.
  • end1: Iterador  de entrada a la posición final de la primera secuencia ordenada.
  • beg2: Iterador  de entrada a la posición inicial de la segunda secuencia ordenada.
  • end2: Iterador  de entrada a la posición final de la segunda secuencia ordenada.

Valor devuelto: verdadero, si todos los elementos del segundo contenedor se encuentran en el primer contenedor.

Tiene una complejidad de tiempo lineal.

CPP

// C++ code to demonstrate the working of includes()
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // initializing 1st container
    vector<int> arr1 = { 1, 4, 6, 3, 2 };
 
    // initializing 2nd container
    vector<int> arr2 = { 1, 2, 4 };
 
    // sorting initial containers
    sort(arr1.begin(), arr1.end());
    sort(arr2.begin(), arr2.end());
 
    // using include() check if all elements
    // of arr2 lie in arr1
    if (includes(arr1.begin(), arr1.end(), arr2.begin(),
                 arr2.end()))
        cout << "All elements of 2nd container are in 1st "
                "container";
    else
        cout << "All elements of 2nd container are not in "
                "1st container";
}
Producción

All elements of 2nd container are in 1st container

Sintaxis 2: Uso del comparador

Modelo:

template 
  bool includes (initer1 beg1, initer1 end1,
                        initer2 beg2, initer2 end2, Compare comp)

Parámetros:

  • beg1:  iterador de entrada a la posición inicial de la primera secuencia ordenada.
  • end1: Iterador  de entrada a la posición final de la primera secuencia ordenada.
  • beg2: Iterador  de entrada a la posición inicial de la segunda secuencia ordenada.
  • end2: Iterador  de entrada a la posición final de la segunda secuencia ordenada.
  • comp: la función de comparación que devuelve un valor booleano verdadero/falso de cada elemento comparado. Esta función acepta dos argumentos. Puede ser un puntero de función o un objeto de función y no puede cambiar los valores.

Valor devuelto: verdadero si todos los elementos del segundo contenedor se encuentran en el primer contenedor.

CPP

// C++ code to demonstrate the working of
// includes()
#include <bits/stdc++.h>
using namespace std;
 
// comparator function
bool comp(int i, int j) { return i < j; }
 
// Driver Code
int main()
{
    // initializing 1st container
    vector<int> arr1 = { 1, 4, 6, 3, 2 };
 
    // initializing 2nd container
    vector<int> arr2 = { 1, 2, 4 };
 
    // sorting initial containers
    sort(arr1.begin(), arr1.end());
    sort(arr2.begin(), arr2.end());
 
    // using include() check if all elements
    // of arr2 lie in arr1
    // using comparator function
    if (includes(arr1.begin(), arr1.end(), arr2.begin(),
                 arr2.end(), comp))
        cout << "All elements of 2nd container are in 1st "
                "container";
    else
        cout << "All elements of 2nd container are not in "
                "1st container";
    return 0;
}
Producción

All elements of 2nd container are in 1st container

Aplicación: esta función se puede usar potencialmente para encontrar si un conjunto es un subconjunto de otro o se puede usar para determinar el ganador de la lotería, en un sistema en el que una persona que tiene todos los números de la lotería en su tarjeta gana la lotería. Este último se explica a continuación a través del código.

CPP

// C++ code to demonstrate the application of
// includes()
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    // lottery numbers
    vector<int> lottery = { 1, 4, 6, 3, 2, 54, 32 };
 
    // Numbers in user's card
    vector<int> user = { 1, 2, 4, 6 };
 
    // sorting initial containers
    sort(lottery.begin(), lottery.end());
    sort(user.begin(), user.end());
 
    // using include() check if all elements
    // of user are present as lottery numbers
    if (includes(lottery.begin(), lottery.end(),
                 user.begin(), user.end()))
        cout << "User has won lottery ( all numbers are "
                "lottery numbers )";
    else
        cout << "User has not won the lottery";
}
Producción

User has won lottery ( all numbers are lottery numbers )

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 *