upper_bound() es una función de biblioteca estándar en C++ definida en el encabezado
Modelo :
Sintaxis 1:
ForwardIterator upper_bound (ForwardIterator primero, ForwardIterator último, const T& val);
Sintaxis 2:
ForwardIterator upper_bound (ForwardIterator primero, ForwardIterator último, const T& val, Compare comp);primero, último : el rango utilizado es [primero, último), que contiene todos los elementos entre primero y último, incluido el elemento señalado por primero pero no el elemento señalado por último.
val: Valor del límite superior a buscar en el rango.
comp: Función binaria que acepta dos argumentos (el primero del tipo apuntado por ForwardIterator, y el segundo, siempre val), y devuelve un valor convertible a bool. La función no modificará ninguno de sus argumentos. Puede ser un puntero de función
o un objeto de función.Tipo de retorno: un iterador al límite superior de val en el rango. Si todos los elementos en el rango se comparan menos que val, la función regresa en último lugar.
Ejemplos:
Input : 10 20 30 30 40 50 Output : upper_bound for element 30 is at index 4 Input : 10 20 30 40 50 Output : upper_bound for element 45 is at index 4 Input : 10 20 30 40 50 Output : upper_bound for element 60 is at index 5
A continuación se muestran algunos programas de C++ para ilustrar el uso de std::upper_bound :
// CPP program to illustrate using // std :: upper_bound with vectors #include <bits/stdc++.h> // Driver code int main() { std::vector<int> v{ 10, 20, 30, 40, 50 }; // Print vector std::cout << "Vector contains :"; for (int i = 0; i < v.size(); i++) std::cout << " " << v[i]; std::cout << "\n"; std::vector<int>::iterator upper1, upper2; // std :: upper_bound upper1 = std::upper_bound(v.begin(), v.end(), 35); upper2 = std::upper_bound(v.begin(), v.end(), 45); std::cout << "\nupper_bound for element 35 is at position : " << (upper1 - v.begin()); std::cout << "\nupper_bound for element 45 is at position : " << (upper2 - v.begin()); return 0; }
Producción:
Vector contains : 10 20 30 40 50 upper_bound for element 35 is at position : 3 upper_bound for element 45 is at position : 4
// CPP program to illustrate using // std :: upper_bound with arrays #include <bits/stdc++.h> using namespace std; // Main Function int main() { int arr[] = { 10, 20, 30, 40, 50 }; // Print elements of array cout << "Array contains :"; for (int i = 0; i < 5; i++) cout << " " << arr[i]; cout << "\n"; // using upper_bound int upper1 = upper_bound(arr, arr+5, 35) - arr; int upper2 = upper_bound(arr, arr+5, 45) - arr; cout << "\nupper_bound for element 35 is at position : " << (upper1); cout << "\nupper_bound for element 45 is at position : " << (upper2); return 0; }
Producción:
Array contains : 10 20 30 40 50 upper_bound for element 35 is at position : 3 upper_bound for element 45 is at position : 4
Complejidad temporal: el número de comparaciones realizadas es logarítmico en la distancia entre la primera y la última. es decir, (como mucho log2(último – primero) + O(1) comparaciones).
Puntos importantes
- std::upper_bound() devuelve un iterador al límite superior del valor que se le pasa.
- std::upper_bound() solo funciona con secuencias ordenadas. es decir, vector con elementos ordenados o array con elementos ordenados.
Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA