वेक्टर में डायनामिक ऐरे की तरह खुद को ऑटोमैटिकली रीसाइज़ करने की क्षमता होती है। जब कोई एलिमेंट डाला या हटाया जाता है, तो कंटेनर अपने स्टोरेज को ऑटोमैटिकली संभालता है।
vector::resize() और vector::reserve() के बीच मुख्य अंतर यह है कि resize() वेक्टर का साइज़ बदलने के लिए उपयोग किया जाता है जबकि reserve() नहीं करता। reserve() का उपयोग केवल निर्दिष्ट संख्या में एलिमेंट्स को बिना मेमोरी रीअलोकेट किए स्टोर करने के लिए किया जाता है। लेकिन resize() में यदि संख्या वर्तमान संख्या से छोटी है तो यह मेमोरी को रीसाइज़ करता है और उसके ऊपर का अतिरिक्त स्पेस डिलीट कर देता है।
vector::resize()
वेक्टर resize() का उपयोग इसके साइज़ को बदलने के लिए किया जाता है।
उदाहरण
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
vector<int>::iterator it;
int c, i;
while (1) {
cout << "1. वेक्टर का साइज़" << endl;
cout << "2. वेक्टर में एलिमेंट डालें" << endl;
cout << "3. वेक्टर को रीसाइज़ करें" << endl;
cout << "4. इटरेटर द्वारा दिखाएं" << endl;
cout << "5. बाहर निकलें" << endl;
cout << "अपनी पसंद दर्ज करें: ";
cin >> c;
switch(c) {
case 1:
cout << "वेक्टर का साइज़: ";
cout << v.size() << endl;
break;
case 2:
cout << "डालने के लिए मान दर्ज करें: ";
cin >> i;
v.push_back(i);
break;
case 3:
cout << "वेक्टर एलिमेंट्स रीसाइज़ करें:" << endl;
v.resize(4);
break;
case 4:
cout << "इटरेटर द्वारा वेक्टर दिखा रहे हैं: ";
for (it = v.begin(); it != v.end(); it++)
cout << *it << " ";
cout << endl;
break;
case 5:
exit(1);
break;
default:
cout << "गलत पसंद" << endl;
}
}
return 0;
}
आउटपुट
1. वेक्टर का साइज़
2. वेक्टर में एलिमेंट डालें
3. वेक्टर को रीसाइज़ करें
4. इटरेटर द्वारा दिखाएं
5. बाहर निकलें
अपनी पसंद दर्ज करें: 1
वेक्टर का साइज़: 0
...
अपनी पसंद दर्ज करें: 3
वेक्टर एलिमेंट्स रीसाइज़ करें:
अपनी पसंद दर्ज करें: 4
इटरेटर द्वारा वेक्टर दिखा रहे हैं: 1 2 4 5
vector::reserve()
Vector reserve() इंगित करता है कि वेक्टर इस तरह बनाया गया है कि यह बिना मेमोरी रीअलोकेट किए कम से कम निर्दिष्ट संख्या में एलिमेंट्स स्टोर कर सकता है।
एल्गोरिदम
शुरुआत
वेक्टर टाइप का वेरिएबल v घोषित करें
वेक्टर टाइप का इटरेटर it घोषित करें
integer डेटाटाइप के दो वेरिएबल c और i घोषित करें
while (1) करें
"1. वेक्टर का साइज़" प्रिंट करें
"2. वेक्टर में एलिमेंट डालें" प्रिंट करें
"3. वेक्टर रिज़र्व करें" प्रिंट करें
"4. इटरेटर द्वारा दिखाएं" प्रिंट करें
"5. बाहर निकलें" प्रिंट करें
"अपनी पसंद दर्ज करें:" प्रिंट करें
वेरिएबल c का मान दर्ज करें
Switch(c)
Case 1:
"वेक्टर का साइज़:" प्रिंट करें
size() फ़ंक्शन कॉल करके वेक्टर का साइज़ प्रिंट करें
Break
Case 2:
"डालने के लिए मान दर्ज करें:" प्रिंट करें
वेरिएबल i का मान दर्ज करें
push_back() फ़ंक्शन कॉल करके वेक्टर में मान डालें
Break
Case 3:
"वेक्टर एलिमेंट्स रिज़र्व करें:" प्रिंट करें
reserve() फ़ंक्शन कॉल करके वेक्टर का साइज़ रिज़र्व करें
Break
Case 4:
"इटरेटर द्वारा वेक्टर दिखा रहे हैं:" प्रिंट करें
for (it = v.begin(); it != v.end(); it++)
इटरेटर it का मान प्रिंट करें
Break
Case 5:
exit() फ़ंक्शन कॉल करके बाहर निकलें
break
Default:
"गलत पसंद" प्रिंट करें
समाप्ति
उदाहरण
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
vector<int>::iterator it;
int c, i;
while (1) {
cout << "1. वेक्टर का साइज़" << endl;
cout << "2. वेक्टर में एलिमेंट डालें" << endl;
cout << "3. वेक्टर रिज़र्व करें" << endl;
cout << "4. इटरेटर द्वारा दिखाएं" << endl;
cout << "5. बाहर निकलें" << endl;
cout << "अपनी पसंद दर्ज करें: ";
cin >> c;
switch(c) {
case 1:
cout << "वेक्टर का साइज़: ";
cout << v.size() << endl;
break;
case 2:
cout << "डालने के लिए मान दर्ज करें: ";
cin >> i;
v.push_back(i);
break;
case 3:
cout << "वेक्टर एलिमेंट्स रिज़र्व करें।" << endl;
v.reserve(100);
break;
case 4:
cout << "इटरेटर द्वारा वेक्टर दिखा रहे हैं: ";
for (it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
break;
case 5:
exit(1);
break;
default:
cout << "गलत पसंद" << endl;
}
}
return 0;
}
आउटपुट
1. वेक्टर का साइज़
2. वेक्टर में एलिमेंट डालें
3. वेक्टर रिज़र्व करें
4. इटरेटर द्वारा दिखाएं
5. बाहर निकलें
अपनी पसंद दर्ज करें: 1
वेक्टर का साइज़: 0
...
अपनी पसंद दर्ज करें: 3
वेक्टर एलिमेंट्स रिज़र्व करें।
अपनी पसंद दर्ज करें: 4
इटरेटर द्वारा वेक्टर दिखा रहे हैं: 1 2 3 4 5
मुख्य अंतर सारांश
| पहलू | resize(n) | reserve(n) |
|---|---|---|
| साइज़ (size()) | n हो जाता है | अपरिवर्तित रहता है |
| क्षमता (capacity()) | कम से कम n | कम से कम n |
| नए एलिमेंट्स | डिफ़ॉल्ट मान से भरे जाते हैं | नहीं बनते |
| उपयोग | वास्तविक एलिमेंट्स की संख्या बदलना | प्रीअलोकेशन द्वारा परफॉर्मेंस सुधारना |
नोट: यह आर्टिकल 1005082676 का डुप्लीकेट प्रतीत होता है। दोनों में समान सामग्री है।