El map::equal_range() es una función integrada en C++ STL que devuelve un par de iteradores. El par se refiere a los límites de un rango que incluye todos los elementos en el contenedor que tienen una clave equivalente a k. Dado que el contenedor del mapa solo contiene una clave única, por lo tanto, el primer iterador del par devuelto apunta al elemento y el segundo iterador del par apunta a la siguiente clave que viene después de la clave K. Si no hay coincidencias con la clave K y el la clave K es mayor que la clave más grande, el rango devuelto es de longitud 1 con ambos iteradores apuntando a un elemento que tiene una clave que indica el tamaño del mapa y los elementos como 0. De lo contrario, el límite inferior y el límite superior apuntan al elemento justo mayor que la clave K.
Sintaxis:
iterator map_name.equal_range(key)
Parámetros: esta función acepta una sola clave de parámetro obligatoria que especifica el elemento cuyo rango en el contenedor se va a devolver.
Valor devuelto: la función devuelve un par de iteradores como se explicó anteriormente.
Los siguientes programas ilustran el método anterior:
Programa 1:
CPP
// C++ program to illustrate the // map::equal_range() function #include <bits/stdc++.h> using namespace std; int main() { // initialize container map<int, int> mp; // insert elements in random order mp.insert({ 4, 30 }); mp.insert({ 1, 40 }); mp.insert({ 6, 60 }); pair<map<int, int>::iterator, map<int, int>::iterator> it; // iterator of pairs it = mp.equal_range(1); cout << "The lower bound is " << it.first->first << ":" << it.first->second; cout << "\nThe upper bound is " << it.second->first << ":" << it.second->second; return 0; }
The lower bound is 1:40 The upper bound is 4:30
Programa 2:
CPP
// C++ program to illustrate the // map::equal_range() function #include <bits/stdc++.h> using namespace std; int main() { // initialize container map<int, int> mp; // insert elements in random order mp.insert({ 4, 30 }); mp.insert({ 1, 40 }); mp.insert({ 6, 60 }); pair<map<int, int>::iterator, map<int, int>::iterator> it; // iterator of pairs it = mp.equal_range(10); cout << "The lower bound is " << it.first->first << ":" << it.first->second; cout << "\nThe upper bound is " << it.second->first << ":" << it.second->second; return 0; }
The lower bound is 3:0 The upper bound is 3:0