Requisito previo: establecer la función lower_bound() en C++ STL , establecer la función upper_bound() en C++ STL
lower_bound() devuelve un iterador que apunta al primer elemento en el rango [first, last) que tiene un valor mayor o igual al valor dado «val» . Pero en el conjunto de pares lower_bound() for pair(x, y) devolverá un iterador que apunta a la posición del par cuyo primer valor es mayor o igual a x .
Si los primeros valores son iguales, devolverá un iterador que apunta a la posición del par cuyo segundo valor es mayor o igual a y .
Si no se cumplen los criterios mencionados anteriormente, devuelve un iterador que apunta al final del conjunto (junto al último par del conjunto).
Sintaxis: hay dos formas de usar lower_bound():
setName.lower_bound({a, b})
límite_inferior(establecerNombre.begin(), establecerNombre.end(), par(a, b))
upper_bound() devuelve un iterador que apunta al primer elemento en el rango [first, last) que tiene un valor mayor que el valor dado «val» . Pero en el conjunto de Pares upper_bound() para par (x, y) devolverá un iterador que apunta a la posición del par cuyo primer valor es mayor que x .
Si los primeros valores son iguales, devolverá un iterador que apunta a la posición del par cuyo segundo valor es mayor que y .
Si no se cumplen los criterios mencionados anteriormente, devuelve un iterador que apunta al final del conjunto (junto al último par del conjunto).
Sintaxis: hay dos formas de usar upper_bound() con Set:
establecerNombre.superior_límite({a, b})
límite_superior(establecerNombre.begin(), establecerNombre.end(), par(a, b))
A continuación se muestra el programa para demostrar lower_bound() y upper_bound() en un conjunto de pares :
// C++ program to demonstrate lower_bound() // and upper_bound() in set of Pairs #include <bits/stdc++.h> using namespace std; // Function to implement lower_bound() void findLowerBound( set<pair<int, int> >& arr, pair<int, int>& p) { // Given iterator points to the // lower_bound() of given pair auto low = lower_bound(arr.begin(), arr.end(), p); cout << "lower_bound() for {1, 2}" << " is: {" << (*low).first << ", " << (*low).second << "}" << endl; } // Function to implement upper_bound() void findUpperBound( set<pair<int, int> >& arr, pair<int, int>& p) { // Given iterator points to the // lower_bound() of given pair auto up = upper_bound(arr.begin(), arr.end(), p); cout << "upper_bound() for {1, 2}" << " is: {" << (*up).first << ", " << (*up).second << "}" << endl; } // Driver Code int main() { // Given sorted vector of Pairs set<pair<int, int> > s; // Insert pairs in set s.insert(make_pair(1, 2)); s.insert(make_pair(2, 4)); s.insert(make_pair(3, 7)); s.insert(make_pair(8, 9)); // Given pair { 1, 2 } pair<int, int> p = { 1, 2 }; // Function Call to find lower_bound // of pair p in arr findLowerBound(s, p); // Function Call to find upper_bound // of pair p in arr findUpperBound(s, p); return 0; }
lower_bound() for {1, 2} is: {1, 2} upper_bound() for {1, 2} is: {2, 4}