Necesito un algoritmo de búsqueda binaria que sea compatible con los contenedores C ++ STL, algo así como std::binary_search
en el <algorithm>
encabezado de la biblioteca estándar , pero lo necesito para devolver el iterador que apunta al resultado, no un simple booleano que me diga si el elemento existe.
(En una nota al margen, ¿qué diablos estaba pensando el comité estándar cuando definieron la API para binary_search?)
Mi principal preocupación aquí es que necesito la velocidad de una búsqueda binaria, por lo que, aunque puedo encontrar los datos con otros algoritmos, como se menciona a continuación, quiero aprovechar el hecho de que mis datos están ordenados para obtener los beneficios de un binario. búsqueda, no una búsqueda lineal.
hasta ahora lower_bound
y upper_bound
fallar si falta el dato:
//lousy pseudo code
vector(1,2,3,4,6,7,8,9,0) //notice no 5
iter = lower_bound_or_upper_bound(start,end,5)
iter != 5 && iter !=end //not returning end as usual, instead it'll return 4 or 6
Nota: también estoy bien usando un algoritmo que no pertenece al espacio de nombres estándar siempre que sea compatible con los contenedores. Como, por ejemplo, boost::binary_search
.