El set::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. Dado que el conjunto contiene elementos únicos, el límite inferior será el elemento mismo y el límite superior apuntará al siguiente elemento después de la clave 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 supera el elemento máximo en el contenedor del conjunto, devuelve un iterador que apunta al último elemento del contenedor del conjunto.
Sintaxis:
set_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 del conjunto se va a devolver.
Valor devuelto: la función devuelve un iterador de pares. (tecla_comp). El par se refiere al rango que incluye todos los elementos del contenedor que tienen una clave equivalente a k. Dado que el conjunto contiene elementos únicos, el límite inferior será el elemento mismo y el límite superior apuntará al siguiente elemento después de la clave 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 supera el elemento máximo en el contenedor del conjunto, devuelve un iterador que apunta al último elemento del contenedor del conjunto.
El siguiente programa ilustra la función anterior.
// CPP program to demonstrate the // set::equal_range() function #include <bits/stdc++.h> using namespace std; int main() { set<int> s; s.insert(1); s.insert(4); s.insert(2); s.insert(5); s.insert(3); // prints the set elements cout << "The set 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(2); cout << "\nThe lower bound of 2 is " << *it.first; cout << "\nThe upper bound of 2 is " << *it.second; // Function returns the last element it = s.equal_range(8); cout << "\nThe lower bound of 8 is " << *it.first; cout << "\nThe upper bound of 8 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; }
The set elements are: 1 2 3 4 5 The lower bound of 2 is 2 The upper bound of 2 is 3 The lower bound of 8 is 5 The upper bound of 8 is 5 The lower bound of 0 is 1 The upper bound of 0 is 1