मेरे पास unordered_map का वेक्टर है जिसे मैंने परिभाषित तुलनात्मक फ़ंक्शन के आधार पर क्रमबद्ध किया है। मैं तुलनात्मक फ़ंक्शन का उपयोग करके मूल्य में से किसी एक को देखने के लिए बाइनरी खोज का उपयोग करना चाहता हूं। हालांकि, बाइनरी खोज केवल बूल लौटाती है और मुझे परिणाम के सूचकांक/पुनरावर्तक की आवश्यकता होती है। मैं क्या कर सकता था?बाइनरी खोज सी ++ एसटीएल
उत्तर
#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 या संभवतः UPPER_BOUND या –
-1 LOWER_BOUND जरूरी तत्व नहीं लौटेगा equal_range। यदि तत्व गुम है तो यह तत्व को वापस कर देगा इससे पहले कि यह वेक्टर में होगा। – T33C
निचले_बाउंड का उपयोग करना अभी भी बुद्धिमान है। इटरेटर ले लो, जांचें कि क्या यह अव्यवस्थित है। यदि ऐसा है, तो इसे हटा दें और खोजे गए तत्व से जांचें। यदि यह तत्व है, तो आपके पास यह है, अन्यथा यह वहां नहीं है। –
- 1. सी ++ एसटीएल की स्ट्रिंग eqivalent बाइनरी डेटा
- 2. एसटीएल कंटेनर की बाइनरी संगतता
- 3. सी ++ एसटीएल में एसटीएल
- 4. ऐरे में बाइनरी खोज
- 5. बाइनरी खोज पेड़ क्यों?
- 6. बाइनरी खोज समस्याएं?
- 7. जावा बाइनरी खोज
- 8. शाखा रहित बाइनरी खोज
- 9. द्विआधारी खोज बनाम बाइनरी खोज पेड़
- 10. सी ++ एसटीएल
- 11. सी ++ एसटीएल
- 12. सी ++ एसटीएल
- 13. जावास्क्रिप्ट बाइनरी खोज पेड़ कार्यान्वयन
- 14. बाइनरी खोज पेड़ के साथ हैश की तुलना करें
- 15. एक क्रमबद्ध सरणी की बाइनरी खोज
- 16. "उचित" जिस तरह से सी ++/एसटीएल
- 17. सी ++ एसटीएल सेट अंतर
- 18. सी ++: एसटीएल multimap.equal_range()
- 19. सी ++ एसटीएल कंटेनर
- 20. सी ++ यूनिकोड और एसटीएल
- 21. सी ++ एसटीएल प्रश्न: आवंटक
- 22. सी ++ एसटीएल जेमलोक
- 23. उपयोग सी ++ एसटीएल
- 24. सी ++ एसटीएल निकालें त्रुटि
- 25. सी ++ एसटीएल-अनुरूप ऑलोकेटर्स
- 26. आरएआईआई और सी ++ एसटीएल
- 27. क्यों सी ++ एसटीएल
- 28. क्या सुनहरी अनुभाग खोज बाइनरी खोज से बेहतर है?
- 29. रैखिक खोज और बाइनरी खोज के बीच क्या अंतर है?
- 30. एसटीएल के खोज के पीछे क्या एल्गोरिदम है?
निचला_बाउंड सरल "किसी भी मिलान मूल्य" से बहुत धीमा प्रतीत होता है। मान लें {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}। मध्य 5 है - मूल्य के लिए मांगा गया। लेकिन निचला_बाउंड छोड़ा जाएगा। यह अतुलनीय है। मैं बाएं सीमा खोजने के ओ (लॉग (एन)) समाधान का अनुमान लगा सकता हूं। लेकिन यह अतिरिक्त है। मैं इस से बहुत परेशान हूँ। हालांकि एक सी समारोह :: bsearch है। – cppist
'! Cmp (* यह, मान)' हमेशा सही है अगर यह! = A.end() '। आपको तर्कों को उलट देना चाहिए। – Ruslan