std::binary_search
Standart kitaplığın <algorithm>
başlığında olduğu gibi, C ++ STL kapsayıcılarıyla uyumlu bir ikili arama algoritmasına ihtiyacım var , ancak öğenin var olup olmadığını söyleyen basit bir boole değil, sonucu işaret eden yineleyiciyi döndürmek için ona ihtiyacım var.
(Bir yan not olarak, standart komite binary_search için API'yi tanımlarken ne düşünüyordu ?!)
Buradaki temel endişem, ikili aramanın hızına ihtiyacım olmasıdır, bu nedenle verileri diğer algoritmalarla bulabilsem de, aşağıda belirtildiği gibi, verilerimin bir ikili programın avantajlarından yararlanacak şekilde sıralanması gerçeğinden yararlanmak istiyorum. arama, doğrusal bir arama değil.
Şimdiye kadar lower_bound
ve upper_bound
veri eksikse başarısız:
//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
Not: Ayrıca, kapsayıcılarla uyumlu olduğu sürece std ad alanına ait olmayan bir algoritma kullanıyorum. Mesela, diyelim boost::binary_search
.