Preciso de um algoritmo de pesquisa binária que seja compatível com os contêineres C ++ STL, algo como std::binary_search
no <algorithm>
cabeçalho da biblioteca padrão , mas preciso retornar o iterador que aponta para o resultado, não um booleano simples informando se o elemento existe.
(Por outro lado, o que diabos o comitê padrão estava pensando quando definiu a API para binary_search ?!)
Minha principal preocupação aqui é que preciso da velocidade de uma pesquisa binária, embora possa encontrar os dados com outros algoritmos, como mencionado abaixo, quero aproveitar o fato de que meus dados são classificados para obter os benefícios de um binário pesquisa, não uma pesquisa linear.
até agora lower_bound
e upper_bound
falhar se o dado estiver faltando:
//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
Observação: também estou bem usando um algoritmo que não pertence ao namespace std, desde que seja compatível com contêineres. Tipo, digamos boost::binary_search
,.