अंतिम अद्यतन:2026-10-12
C++ vector resize और reverse¶
C++ में, resize और reserve कंटेनरों (जैसे std::vector) के दो मेंबर फ़ंक्शन हैं, जिनका उपयोग vector के साइज़ और मेमोरी एलोकेशन को मैनेज करने के लिए किया जाता है।
उदाहरण के लिए:
std::vector<int> v1;
v1.resize(1000); //allocation + instance creation
cout <<(v1.size() == 1000)<< endl; //prints 1
cout <<(v1.capacity()==1000)<< endl; //prints 1
std::vector<int> v2;
v2.reserve(1000); //only allocation
cout <<(v2.size() == 1000)<< endl; //prints 0
cout <<(v2.capacity()==1000)<< endl; //prints 1
resize फ़ंक्शन कंटेनर का साइज़ बदलने के लिए उपयोग होता है, इससे कंटेनर में एलिमेंट्स की संख्या बढ़ाई या घटाई जा सकती है। जब कंटेनर का साइज़ बढ़ाया जाता है, तो नए जोड़े गए एलिमेंट्स इनिशियलाइज़ होंगे। जब कंटेनर का साइज़ घटाया जाता है, तो नए साइज़ से बाहर वाले एलिमेंट्स हटा दिए जाते हैं।
reserve फ़ंक्शन कंटेनर के लिए मेमोरी स्पेस पहले से एलोकेट करता है, लेकिन कंटेनर का साइज़ नहीं बदलता। इसका उपयोग परफ़ॉर्मेंस सुधारने के लिए पहले से पर्याप्त मेमोरी एलोकेट करने में किया जा सकता है, ताकि बार-बार मेमोरी री-एलोकेशन से बचा जा सके। लेकिन, reserve कॉल करने से कंटेनर का साइज़ नहीं बदलता, यह सिर्फ़ कंटेनर के लिए पर्याप्त मेमोरी स्पेस एलोकेट करता है।
ध्यान देने योग्य बात यह है कि resize और reserve फ़ंक्शन की कंटेनर टाइप के हिसाब से उपलब्धता अलग-अलग है। resize फ़ंक्शन ज़्यादातर कंटेनर टाइप्स के लिए उपलब्ध है, जबकि reserve फ़ंक्शन सिर्फ़ डायनामिक साइज़ वाले कंटेनर टाइप्स जैसे std::vector और std::deque के लिए मान्य है। फ़िक्स्ड साइज़ वाले कंटेनर टाइप्स (जैसे std::array) के लिए reserve कॉल करने का कोई असर नहीं होता।
सोर्स कोड के स्तर से देखें तो:
void resize(size_type new_size, value_type value = value_type()) {
if (new_size < size()) {
erase(begin() + new_size, end()); // 移除超出新大小的元素
} else {
insert(end(), new_size - size(), value); // 添加新元素
}
}
void reserve(size_type _n) {
if (__n > max_size())
__throw_length_error(__N("vector::reserve"));
if (capacity() < __n)
_M_reallocate(__n);
}
इस सेक्शन का अंत
संबंधित विषय¶
- C++ प्योर वर्चुअल फ़ंक्शन और एब्स्ट्रैक्ट क्लास | C++那些事
- C++ assert | C++那些事
- C++ bit-field | C++那些事
- C भाषा से C++ पॉलीमॉर्फ़िज़्म | C++那些事
- C++ const constant और qualifier | C++那些事
- C++ const परिवार | C++那些事
- C++ dereference ऑपरेटर * | C++那些事
- C++ इनिशियलाइज़ेशन और असाइनमेंट | C++那些事
- C++ multiple return values लिखने के तरीके | C++那些事
- C++ mutable कीवर्ड | C++那些事