Ambas funciones realizan una búsqueda binaria, ambas funciones requieren una secuencia ordenada (técnicamente el requisito es mucho más débil, pero puede leer la documentación para eso), pero hacen cosas diferentes:
std :: puntos lower_bound en la primera posición en el rango igual
std :: upper_bound apunta uno más allá del final del rango igual.
- ¿Avanzar en CS en general hará que los algoritmos sean cada vez más complejos con el tiempo que las personas no pueden manejar? ¿Cuáles son las soluciones para ese caso?
- Dada una matriz 2D de valores booleanos, ¿cuál es la forma correcta de determinar si contiene un triángulo?
- ¿Cuáles son los mejores algoritmos para el análisis de sentimientos?
- ¿Necesito conocer algoritmos de aprendizaje automático para asegurar un trabajo como analista de datos?
- ¿Ha cambiado recientemente el algoritmo de Quora?
std :: equal_range devuelve los resultados de lower_bound y upper_bound
Para tomar su ejemplo, {1,2,2,3,4,4,5,7,8,10,45}, el rango igual ocupado por el valor 2 consta de dos elementos: elemento en el índice 1 (igual a 2 ) y elemento en el índice 2 (también igual a 2). El límite inferior es el índice 1, el límite superior es el índice 3:
L (2)
El |
1,2,2,3,4,4,5,7,8,10,45
El |
U (2)
el rango igual ocupado por el valor 1 consiste en un único elemento en el índice 0: el enlace inferior es el índice 0, el límite superior es el índice 1
L (1)
El |
1,2,2,3,4,4,5,7,8,10,45
El |
U (1)
el rango igual ocupado por el valor 6 estaría entre el índice 7 (donde se encuentra el valor 5) y el índice 8 (donde se encuentra el valor 7), en este caso lower_bound y upper_bound devuelven el mismo iterador apuntando a la siguiente posición:
L (6)
El |
1,2,2,3,4,4,5,7,8,10,45
El |
U (6)