के बीच दूरी मुझे std :: set में किसी तत्व की अनुक्रमणिका ढूंढने की आवश्यकता है। इस सूचकांक को शुरुआत से हीटरेटर की दूरी के रूप में देखा जा सकता है। एक तरीका यह हो सकता है:std :: set start() और std :: सेट iterator O (logn)
for(int i = 0, set<int>::iterator it = s.begin(); it != iteratorToBeFound; ++it, ++i);
यह स्पष्ट रूप से हे (एन) समय लगता है। लेकिन हम जानते हैं कि आंतरिक रूप से सेट द्वारा कार्यान्वित एक बाइनरी खोज पेड़ में रूट से दूरी ओ (लॉग एन) समय में पाई जा सकती है।
क्या सी ++ सेट में ओ (लॉग एन) समय में इंडेक्स को खोजने के लिए इसे लागू करने का कोई तरीका है?
आपको सूचकांक की आवश्यकता क्यों होगी? – paulm
क्या आप वाकई बाइनरी सर्च पेड़ में 'ओ (लॉग एन)' समय में दूरी खोजना संभव है? 'सेट' आमतौर पर एक लाल-काला पेड़ होता है, जिसमें प्रत्येक नोड पर बहुत सारी जानकारी नहीं होती है कि इसके बाएं और दाएं उपट्री क्रमशः कितने तत्व हैं। याद रखें कि आप सीधे रूट से दूरी की तलाश नहीं कर रहे हैं, आप अपने पत्ते के बाईं ओर पत्तियों की कुल संख्या की तलाश में हैं। –
@SteveJessop: ओह, तो आर-बी पेड़ में ओ (लॉगन) में इंडेक्स की गणना करने का कोई तरीका नहीं है? – divanshu