función multiconjunto equal_range() en C++ STL

El multiset::equal_range() es una función integrada en C++ STL que devuelve un iterador de pares. El par se refiere al rango que incluye todos los elementos del contenedor que tienen una clave equivalente a k. El límite inferior será el elemento mismo y el límite superior apuntará al siguiente elemento después de la tecla k. Si no hay elementos que coincidan con la clave K, el rango devuelto es de longitud 0 con ambos iteradores apuntando al primer elemento que es mayor que k según el objeto de comparación interna del contenedor (key_comp). Si la clave excede el elemento máximo en el contenedor de conjuntos, devuelve un iterador que apunta al último elemento pasado en el contenedor de conjuntos múltiples.

Sintaxis:

multiset_name.equal_range(key) 

Parámetros: la función acepta una clave de parámetro obligatoria que especifica la clave cuyo rango en el contenedor de conjuntos múltiples se va a devolver.

Valor devuelto: la función devuelve un iterador de par.

El siguiente programa ilustra la función anterior.

Programa 1:

// CPP program to demonstrate the
// multiset::equal_range() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
  
    multiset<int> s;
  
    // Inserts elements
    s.insert(1);
    s.insert(6);
    s.insert(2);
    s.insert(5);
    s.insert(3);
    s.insert(3);
    s.insert(5);
    s.insert(3);
  
    // prints the multiset elements
    cout << "The multiset elements are: ";
    for (auto it = s.begin(); it != s.end(); it++)
        cout << *it << " ";
  
    // Function returns lower bound and upper bound
    auto it = s.equal_range(3);
    cout << "\nThe lower bound of 3 is " << *it.first;
    cout << "\nThe upper bound of 3 is " << *it.second;
  
    // Function returns the last element
    it = s.equal_range(10);
    cout << "\nThe lower bound of 10 is " << *it.first;
    cout << "\nThe upper bound of 10 is " << *it.second;
  
    // Function returns the range where the
    // element greater than 0 lies
    it = s.equal_range(0);
    cout << "\nThe lower bound of 0 is " << *it.first;
    cout << "\nThe upper bound of 0 is " << *it.second;
  
    return 0;
}
Producción:

The multiset elements are: 1 2 3 3 3 5 5 6 
The lower bound of 3 is 3
The upper bound of 3 is 5
The lower bound of 10 is 8
The upper bound of 10 is 8
The lower bound of 0 is 1
The upper bound of 0 is 1

Programa 2:

// CPP program to demonstrate the
// multiset::equal_range() function
#include <bits/stdc++.h>
using namespace std;
int main()
{
  
    multiset<int> s;
  
    // Inserts elements
    s.insert(1);
    s.insert(6);
    s.insert(2);
    s.insert(5);
    s.insert(3);
    s.insert(3);
    s.insert(5);
    s.insert(3);
  
    // prints the multiset elements
    cout << "The multiset elements are: ";
    for (auto it = s.begin(); it != s.end(); it++)
        cout << *it << " ";
  
    // Function returns lower bound and upper bound
    auto it = s.equal_range(3);
    cout << "\nThe lower bound of 3 is " << *it.first;
    cout << "\nThe upper bound of 3 is " << *it.second;
  
    s.erase(it.first, it.second);
  
    // prints the multiset elements after erasing the
    // range
    cout << "\nThe multiset elements are: ";
    for (auto it = s.begin(); it != s.end(); it++)
        cout << *it << " ";
  
    return 0;
}
Producción:

The multiset elements are: 1 2 3 3 3 5 5 6 
The lower bound of 3 is 3
The upper bound of 3 is 5
The multiset elements are: 1 2 5 5 6

Publicación traducida automáticamente

Artículo escrito por gopaldave 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 *