Tanımladığım karşılaştırma işlevi temelinde sıralanmış bir unordered_map vektörüm var. Karşılaştırma işlevini kullanarak değerlerden birini aramak için ikili aramayı kullanmak istiyorum. Ancak, ikili arama sadece boole döndürür ve sonucun indeksine/yineleyicisine ihtiyacım var. Ne yapabilirdim?İkili Arama C++ STL
cevap
#include <algorithm>
using namespace std;
//!!!!! a must be sorted using cmp. Question indicates that it is.
it = lower_bound(a.begin, a.end(), value, cmp);
//Check that we have actually found the value.
//If the requested value is missing
//then we will have the value before where the requested value
//would be inserted.
if(it == a.end() || !cmp(*it, value))
{
//element not found
}
else
{
//element found
}
#include <algorithm>
using namespace std;
it = lower_bound(a.begin, a.end(), value, cmp);
+1 ya da muhtemelen UPPER_BOUND ya da zorunlu elemanı döndürmez –
-1 LOWER_BOUND equal_range. Eğer eleman eksikse, elemanın vektörde olmasından önce dönmeden dönecektir. – T33C
hala low_bound kullanmak akıllıca. Yineleyiciyi alın, kabul edilemez olup olmadığını kontrol edin. Eğer öyleyse, onu seçin ve aranan eleman ile kontrol edin. Eğer öyleyse, sizde var, o orada değil. –
- 1. İkili Arama Ağacını sil
- 2. C++ STL ayar aralığı
- 3. C++ Bir STL :: multimap
- 4. C Analog To STL
- 5. Neden C++ STL
- 6. C++ STL uyumlu Allocators
- 7. C++ STL kaldır hatası
- 8. İkili Arama Sonlandırma Durumu
- 9. Dizi İçinde İkili Arama
- 10. ruby'de ikili arama ağaçları
- 11. C (kendi) yineleyici türü ++ (STL)
- 12. C++ ile problem çözme STL
- 13. İkili Arama Ağacında verileri güncelleştirme
- 14. İkili Arama Ağacı Dizisi Çıktısı
- 15. Bir STL vektörünün içindeki bir C++ STL vektörünü bulmak için
- 16. C++ STL koleksiyonları ve C# koleksiyonlarının karşılaştırması?
- 17. C char öğesine göre ikili arama ağacı ekleme
- 18. python'daki ikili arama ağaçlarını temsil eder
- 19. STL
- 20. STL Harita karşılaştırmak fonksiyon nesne
- 21. C++: İkili Öbek
- 22. Visual C++ İkili Tekrarlanabilirlik
- 23. Kısmi C++ Şablon İhtisas STL kapsayıcılarla
- 24. C++/STL: std :: verilen adımla dönüşüm mü?
- 25. C++ Karakter dizisini STL kullanarak kaldırma
- 26. Clojure'da ikili arama ağacını nasıl yaparsınız?
- 27. Bir ikili arama ağacının derinliğini hesaplama
- 28. Yazdırma Düzeni Sırası İkili Arama Ağacı Biçimlendirme
- 29. Ruby # index Yöntem VS İkili Arama
- 30. D 2.0'de (Phobos) İkili Arama mı?
lower_bound, "eşleşen herhangi bir değerden" çok daha yavaş görünüyor. Varsayalım {1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,6,7}. Orta 5 - aranan bir değer. Ancak lower_bound sola gidecek. Bu inoptimal. O (Log (N)) sol sınır bulma çözümünü düşünebilirim. Ama fazladır. Bundan çok üzüldüm. Ancak bir C işlevi :: bsearch var. – cppist
'! Cmp (* it, value)', her zaman, eğer! Argümanları tersine çevirmelisin. – Ruslan