"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++ में `std::remove` और `std::erase` के बीच क्या अंतर है?

C++ में `std::remove` और `std::erase` के बीच क्या अंतर है?

2024-11-11 को प्रकाशित
ब्राउज़ करें:854

 What\'s the Difference Between `std::remove` and `std::erase` in C  ?

std::erase और std::remove के बीच अंतर को समझना

std::remove एल्गोरिथ्म एक बहुमुखी उपकरण है जिसे संचालित करने के लिए डिज़ाइन किया गया है किसी भी फॉरवर्ड इटरेटर जोड़ी पर, इसे कंटेनरों और परिदृश्यों की एक विस्तृत श्रृंखला पर लागू किया जा सकता है। अपने समकक्ष std::erase के विपरीत, जो कंटेनर से तत्वों को प्रभावी ढंग से हटाता है, std::remove केवल तत्वों को पुनर्व्यवस्थित करता है।

1। std::remove

std::remove की बारीकियों को उजागर करना कंटेनर को तार्किक रूप से दो खंडों में विभाजित करके काम करता है: एक खंड जिसमें हटाए जाने वाले तत्व होते हैं और एक खंड जिसमें शेष तत्व होते हैं। यह कंटेनर के माध्यम से पुनरावृत्ति करके और गैर-हटाए गए तत्वों को आगे बढ़ाकर, हटाए गए तत्वों को प्रभावी ढंग से ओवरराइट करके करता है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि std::remove वास्तव में हटाए गए तत्वों को नहीं मिटाता है; वे स्मृति में रहते हैं लेकिन प्रभावी रूप से दृश्य से छिपे रहते हैं।

कंटेनर आकार() फ़ंक्शन के संयोजन में std::remove का उपयोग करने पर यह व्यवहार स्पष्ट हो जाता है। std::remove का उपयोग करके किसी तत्व को हटाने के बाद, std::size() कंटेनर का मूल आकार लौटाता रहेगा, भले ही कुछ तत्व तार्किक रूप से हटा दिए गए हों। छिपे हुए तत्वों को भौतिक रूप से हटाने के लिए std::erase का उपयोग करने के बाद ही कंटेनर का आकार बदलता है।

2। std::remove

के प्रभाव की कल्पना करते हुए मूल प्रश्न में दिए गए कोड स्निपेट पर विचार करें:

std::vector a;
a.push_back(1);
a.push_back(2);

std::remove(a.begin(), a.end(), 1);

int s = a.size();

std::remove निष्पादित करने के बाद, वेक्टर में अभी भी दो तत्व (2 और 2) हैं, लेकिन पहला तत्व (1) तार्किक रूप से हटा दिया गया है और दृश्य से छिपा हुआ है। इसलिए, छिपे हुए हटाए गए तत्व की उपस्थिति के बावजूद, std::size() 2 लौटाता है।

3। भौतिक निष्कासन के लिए std::erase का उपयोग करना

हटाए गए तत्वों को भौतिक रूप से हटाने और कंटेनर के आकार को अद्यतन करने के लिए, std::erase चलन में आता है। पहले तर्क के रूप में std::remove द्वारा लौटाए गए पुनरावर्तक जोड़े के साथ std::erase को लागू करके, आप छिपे हुए हटाए गए तत्वों को हटा सकते हैं और कंटेनर के आकार को कम कर सकते हैं:

a.erase(std::remove(a.begin(), a.end(), 1), a.end());

इस मामले में, std::भौतिक रूप से मिटा दें तत्व 1 को हटाता है, वेक्टर को एक तत्व (2) और 1 के अद्यतन आकार के साथ छोड़ देता है।

4। std::remove की उपयोगिता के दायरे को समझना

हालांकि std::remove को केवल std::erase के साथ संयोजन में उपयोग करने के लिए डिज़ाइन नहीं किया गया है, यह विभिन्न परिदृश्यों में व्यापक उपयोग पाता है जहां तार्किक विभाजन होता है तत्वों की आवश्यकता है. उदाहरण के लिए, आप std::remove को नियोजित कर सकते हैं:

  • विभाजन तत्व जो एक विशिष्ट मानदंड को पूरा करते हैं, उन तत्वों से जो ऐसा नहीं करते हैं।
  • समान तत्वों को एक साथ समूहित करें।
  • किसी विशिष्ट तत्व या तत्वों के समूह की स्थिति ढूंढें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3