शुरुआत के लिए, मैं cplusplus.com से प्राप्त किसी भी जानकारी से सावधान रहूंगा; साइट पर कुछ त्रुटियों के लिए जाना जाता है।
cppreference.com पर जाकर, हम पाते हैं कि जटिलता निरंतर निरंतर समय है। इसका मतलब यह है कि एन erase
संचालन के किसी भी अनुक्रम में समय ओ (एन) लेना चाहिए, भले ही एक व्यक्ति मिटाने के ऑपरेशन में समय (1) से अधिक समय लगे।
यह पता चला है कि लाल/काले पेड़ से डालने या हटाने के लिए आवश्यक समय निम्नानुसार गणना की जाती है: प्रत्येक प्रविष्टि या हटाने में नोड के लिए स्थिति खोजने के लिए समय O (लॉग n) लगता है, लेकिन फिर करता है तत्व को सम्मिलित करने या हटाने के लिए केवल amortized ओ (1) काम करते हैं। इसका मतलब यह है कि लाल/काले पेड़ से नोड डालने या हटाने से किए गए काम पर पेड़ को पुनर्व्यवस्थित करने के लिए आवश्यक काम के बजाय, जहां नोड जाता है, यह पता लगाने के लिए आवश्यक काम से प्रभुत्व होता है। नतीजतन, यदि आपके पास पहले से ही लाल/काले पेड़ में एक सूचक है और उस तत्व को हटाना चाहते हैं, तो आपको तत्व को हटाने के लिए केवल एम (1) काम करना होगा। प्रत्येक व्यक्ति को हटाने में थोड़ा समय लग सकता है (अधिकतर ओ (लॉग एन) पर), लेकिन एन परिचालनों की एक धारा में कुल काम किया जाता है ओ (एन)।
ध्यान दें कि मानक को std::map
लाल/काले पेड़ का उपयोग करने की आवश्यकता नहीं है। यह किसी अन्य प्रकार की डेटा संरचना का उपयोग कर सकता है (कहें, splay tree, scapegoat tree, या निर्धारक skiplist) जो इस समय जटिलता की भी गारंटी देता है। दिलचस्प बात यह है कि, सभी संतुलित द्विआधारी खोज वृक्ष संरचनाएं अमूर्त ओ (1) हटाने का समर्थन नहीं कर सकती हैं। AVL tree, उदाहरण के लिए, इस गारंटी नहीं है।
आशा है कि इससे मदद मिलती है!
http://stackoverflow.com/questions/12078795/stdmaperase-which-overload-is-faster –