std :: incluye la función de () con ejemplo en C ++

En este artículo, vamos a ver lo es el uso de std :: incluye () , y cómo utilizar de manera eficiente que en el programa?

std :: incluye ()

incluye () es una función STL muy útil que comprueba si una gama ordenada incluye otra gama ordenada o no. En otras palabras, ayuda a comprobar si un conjunto es un subconjunto de otro conjunto o no teniendo en cuenta el conjunto se ordena. Huelga decir que, tanto gama / set debe pedirse de la misma manera, es decir, ya sea tanto en sentido ascendente o tanto en orden descendente. De lo contrario, no será capaz de detectar.

Tiene dos tipos de usos:

1) class comparador

Sintaxis:

bool includes(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2);

Cuando,

  • InputIterator1 first1 – a partir gama del recipiente que class
  • InputIterator1 last1 – terminando gama del recipiente que Default
  • InputIterator2 primero2 – a partir gama del recipiente que será incluido
  • InputIterator2 ultimo2 – a partir gama del recipiente que será incluido

Así que básicamente [first1, last1] define el contenedor que class contenidos y [primero2, ultimo2] define el recipiente cuyo contenido será incluido.

La función devuelve verdadero si el container1 incluye contenedor 2, de lo contrario. Puesto que, se utiliza include comparador, dos elementos, A y B son considerados equivalentes si ((a & lt;! B) & amp; & amp;! (B & lt; a)).

class ejemplo:

Si container1 es [3, 5, 7, 9] y container2 es [5, 9] entonces container1 incluye container2 y por lo tanto la función include se class verdadera;

Pero si el contenedor era [9, 5] que habría reajustada falsa porque cuando se encuentra el rango de 9 ya está cubierto en container1, hay 5 es allí después de las 9 en el recipiente 1. Además, si es container2 [5,8 ] se class falso como container1 no lo hace recipiente 8 en absoluto.

continuación es la implementación:

include 1: arr1 = [3,5,7,9], arr2 = [5,9]

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr1{ 3, 5, 7, 9 };
vector<int> arr2{ 5, 9 };
if (includes(arr1.begin(), arr1.end(), arr2.begin(), arr2.end()))
cout << "arr1 contains arr2n";
else
cout << "arr1 doesn't contain arr2n";
return 0;
}

salida:

arr1 contains arr2

default 2: arr2 = [3,5,7,9], arr2 = [9,5]

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr1{ 3, 5, 7, 9 };
vector<int> arr2{ 9, 5 };
if (includes(arr1.begin(), arr1.end(), arr2.begin(), arr2.end()))
cout << "arr1 contains arr2n";
else
cout << "arr1 doesn't contain arr2n";
return 0;
}

de salida:

arr1 doesn't contain arr2

For 3: arr2 = [3,5,7, 9], arr2 = [5, 8]

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr1{ 3, 5, 7, 9 };
vector<int> arr2{ 5, 8 };
if (includes(arr1.begin(), arr1.end(), arr2.begin(), arr2.end()))
cout << "arr1 contains arr2n";
else
cout << "arr1 doesn't contain arr2n";
return 0;
}

de salida:

arr1 doesn't contain arr2

2) Utilizando definida por el usuario comparador

podemos utilizar nuestro comparador definida por el usuario así como para extender el uso de la incluye () función.

La sintaxis include return será:

bool includes(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2,
Compare comp );

Cuando todos los argumentos son los mismos que antes, excepto el argumento adicional que es la función comparador definida por el usuario. Dos elementos a & amp; b se dice que son iguales si (comp (a, b) & amp;! & amp;! comp (b, a)) es verdadero /

Podemos demostrar la necesidad return un comparador definida por el usuario a través de un ejemplo.

digamos que los elementos no son cualquier tipo de datos primitivo, sino más bien algún tipo de datos definido por el usuario. En esos casos para comparar dos objetos (elementos), tenemos que escribir nuestro comparador definida por el usuario.

Sat Case ejemplo siguiente es la estructura Case:

class student {
int score;
int roll;
string name;
public:
student()
{
score = 0;
roll = 0;
name = "";
}
student(int sc, int ro, string nm)
{
score = sc;
roll = ro;
name = nm;
}
int get_score()
{
return score;
}
int get_roll()
{
return roll;
}
string get_name()
{
return name;
}
};

En lo anterior Case, podemos y rsquo; t comparar usando ‘& lt;’ o ‘& gt;’ operadores. Más bien necesitamos que nuestro comparador definida por el usuario puede ser algo como:

bool comp(student a, student b)
{
//if all details are same then both elements are same otherwise false
if (a.get_name() == b.get_name() && a.get_score() == b.get_score() && a.get_roll() == b.get_roll())
return false;
return true;
}

Ahora usted debe estar preguntándose por qué volvimos falsa cuando todos los datos coinciden. Esto se debe a que ambos objetos a & amp; b se consideran iguales si los (a, b) & amp;! & amp; ! Comp (b, a). Ahora se puede extender la lógica según sus casos de uso.


Deja un comentario

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