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; }
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; }
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