Requisito previo: mapear la función lower_bound() en C++ STL , mapear la función upper_bound() en C++ STL
En este artículo, discutiremos la implementación de lower_bound() y upper_bound() en el Mapa de pares .
- lower_bound(): Devuelve un iterador que apunta al primer elemento del rango [first, last) que tiene un valor mayor o igual al valor dado “val” . Pero en Map of Pairs lower_bound() for pair(x, y) devolverá un iterador que apunta al par cuyo primer valor es mayor o igual a x y el segundo valor es mayor que igual a y .
Si no se cumplen los criterios mencionados anteriormente, devuelve un iterador que apunta al par {Map.size(), 0} .Sintaxis:
mp.lower_bound({a, b}) where, mp is the map of pairs and {a, b} whose lower_bound is to be found
- upper_bound(): Devuelve un iterador que apunta al primer elemento del rango [first, last) que tiene un valor mayor que el valor dado “val” . Pero en Map of Pairs upper_bound() for pair(x, y) devolverá un iterador que apunta al par cuyo primer valor es mayor que x y el segundo valor es mayor que y .
Si no se cumplen los criterios mencionados anteriormente, devuelve un iterador que apunta al par {Map.size(), 0} .Sintaxis:
mp.upper_bound({a, b}) where, mp is the map of pairs and {a, b} whose upper_bound is to be found
A continuación se muestra el programa para demostrar lower_bound() y upper_bound() en el mapa de pares:
Programa 1:
// C++ program to demonstrate lower_bound() // and upper_bound() in Map of Pairs #include <bits/stdc++.h> using namespace std; // Function to implement lower_bound() void findLowerBound( map<pair<int, int>, int>& mp, pair<int, int>& p) { // This iterator points to the // lower_bound() of given pair auto low = mp.lower_bound(p); cout << "lower_bound() for {2, 5}" << " is: {" << (*low).first.first << ", " << (*low).first.second << "}" << endl; } // Function to implement upper_bound() void findUpperBound( map<pair<int, int>, int>& mp, pair<int, int>& p) { // This iterator points to the // upper_bound() of given pair auto up = mp.upper_bound(p); cout << "upper_bound() for {2, 5}" << " is: {" << (*up).first.first << ", " << (*up).first.second << "}" << endl; } // Driver Code int main() { // Declare map of Pairs map<pair<int, int>, int> mp; // Insert Pairs in Map mp.insert({ { 2, 3 }, 8 }); mp.insert({ { 4, 1 }, 5 }); mp.insert({ { 7, 1 }, 3 }); mp.insert({ { 9, 3 }, 1 }); mp.insert({ { 5, 0 }, 3 }); // Given pair {2, 5} pair<int, int> p = { 2, 5 }; // Function Call to find lower_bound // of pair p in map mp findLowerBound(mp, p); // Function Call to find upper_bound // of pair p in map mp findUpperBound(mp, p); return 0; }
Producción:
lower_bound() for {2, 5} is: {4, 1} upper_bound() for {2, 5} is: {4, 1}