मुझे एक द्विआधारी खोज एल्गोरिथ्म की आवश्यकता है जो सी ++ एसटीएल कंटेनरों के साथ संगत है, std::binary_searchमानक पुस्तकालय के <algorithm>हेडर में कुछ ऐसा है , लेकिन मुझे इसकी आवश्यकता है कि पुनरावृत्तिकर्ता जो परिणाम पर इंगित करता है, न कि एक साधारण बूलियन जो तत्व मौजूद है, मुझे बता रहा है।
(एक तरफ ध्यान दें, कि बाइनरी_सर्च के लिए एपीआई को परिभाषित करने के दौरान मानक समिति क्या सोच रही थी?)
यहां मेरी मुख्य चिंता यह है कि मुझे एक द्विआधारी खोज की गति की आवश्यकता है, इसलिए यद्यपि मैं अन्य एल्गोरिदम के साथ डेटा पा सकता हूं, जैसा कि नीचे उल्लेख किया गया है, मैं इस तथ्य का लाभ उठाना चाहता हूं कि मेरे डेटा को एक बाइनरी के लाभ प्राप्त करने के लिए हल किया गया है खोज, रैखिक खोज नहीं।
अब तक lower_boundऔर upper_boundअसफल रहा अगर डेटम गायब है:
//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
नोट: मैं भी एक एल्गोरिथ्म का उपयोग करके ठीक हूं जो कि std नाम स्थान से संबंधित नहीं है जब तक कि कंटेनर के साथ संगत नहीं है। जैसे, कहना boost::binary_search।