में बाइनरी खोज मैं वेक्टर तत्वों की स्थिति को किसी अन्य वेक्टर में देखने की कोशिश कर रहा हूं। यहां मैं binary search
जितनी तेजी से कार्यान्वयन का उपयोग करने में रूचि रखता हूं। मेरे पास लंबाई 1 मिलियन या उससे अधिक के विभिन्न वैक्टर हैं, इसलिए मैं कुछ तेज़ी से हासिल करने की कोशिश कर रहा हूं। मेरे मामले मेंstd :: vector
के बाद स्थितियों:
1)vector
जिसमें मैं तलाश कर रहा हूँ क्रमबद्ध किया जाता है।
2) तत्व मैं के लिए हमेशा वहाँ हो जाएगा यानी मैं not found
का मामला नहीं है, और मैं एक तेजी से रास्ते में वेक्टर तत्व के सूचकांक प्राप्त करना चाहते हैं तलाश कर रहा हूँ।
मैंने वेक्टर तत्वों के सूचकांक प्राप्त करने के लिए निम्न कोड का प्रयास किया।
#include <iostream>
#include <vector>
#include <algorithm>
template<class Iter, class T>
Iter binary_find(Iter begin, Iter end, T val)
{
Iter i = std::lower_bound(begin, end, val);
return i;
}
int main() {
std::vector<std::string> values = {"AAAAAA","AB", "AD" ,"BCD","CD", "DD" };
std::vector<std::string> tests = {"AB", "CD","AD", "DD"};
for(int i=0 ; i < tests.size(); i++) {
int pos = binary_find(values.begin(), values.end(), tests.at(i))- values.begin();
std::cout << tests.at(i) << " found at: " << pos <<std::endl;
}
return 0;
}
मैं अगर कोड द्विआधारी खोज कार्यान्वयन के साथ मेल खाता है पता करना चाहते हैं। ??
क्या वेक्टर तत्वों की अनुक्रमणिका प्राप्त करने का कोई तेज़ तरीका है?
इस कोड को बेहतर बनाने के लिए कोई और सुझाव।
यदि आप स्वयं को बहुत सारे प्रदर्शन-महत्वपूर्ण खोजों को पाते हैं, तो आप किसी प्रकार के एक सहयोगी कंटेनर पर विचार करना चाहेंगे। – TartanLlama