वेक्टर इन C++ मानक टेम्पलेट लाइब्रेरी (एसटीएल) उदाहरण के साथ

क्या है एक C++ वेक्टर?

A C++ वेक्टर यह एक गतिशील सरणी है जो अपने आप अपना आकार बदलने में सक्षम है। आकार बदलने की प्रक्रिया वेक्टर से किसी तत्व को जोड़ने या हटाने के बाद होती है। स्टोरेज को कंटेनर द्वारा स्वचालित रूप से नियंत्रित किया जाता है। वेक्टर के तत्वों को सन्निहित स्टोरेज में संग्रहीत किया जाता है। यह अनुमति देता है C++ प्रोग्रामर को इटरेटर्स का उपयोग करके वेक्टर तत्वों तक पहुंचने और उन्हें पार करने में सक्षम बनाना।

किसी वेक्टर में नया डेटा डालने का काम उसके अंत में किया जाता है। इसमें एक अलग समय लगता है। वेक्टर से किसी तत्व को हटाने में निरंतर समय लगता है। इसका कारण यह है कि वेक्टर का आकार बदलने की कोई ज़रूरत नहीं होती। वेक्टर की शुरुआत में किसी तत्व को डालने या हटाने में रैखिक समय लगता है।

वेक्टर का उपयोग कब करें?

A C++ वेक्टर का उपयोग निम्नलिखित परिस्थितियों में किया जाना चाहिए:

  • जब लगातार बदलते रहने वाले डेटा तत्वों से निपटना हो।
  • यदि शुरुआत से पहले डेटा का आकार ज्ञात नहीं है, तो वेक्टर को कंटेनर का अधिकतम आकार निर्धारित करने की आवश्यकता नहीं होगी।

वेक्टर को कैसे प्रारंभ करें C++

वेक्टरों का वाक्यविन्यास C++ है:

vector <data-type> name (items)
  • जैसा कि ऊपर दिखाया गया है, हम वेक्टर कीवर्ड से शुरू करते हैं।
  • डेटा-प्रकार वेक्टर में संग्रहीत किए जाने वाले तत्वों का डेटा प्रकार है।
  • नाम वेक्टर या डेटा तत्वों का नाम है।
  • आइटम वेक्टर के डेटा के लिए तत्वों की संख्या को दर्शाते हैं। यह पैरामीटर वैकल्पिक है।

इटरेटर्स

इटरेटर्स का उद्देश्य हमें वेक्टर में संग्रहीत तत्वों तक पहुँचने में मदद करना है। यह एक ऑब्जेक्ट है जो पॉइंटर की तरह काम करता है। यहाँ कुछ सामान्य इटरेटर्स दिए गए हैं जो समर्थित हैं C++ वैक्टर:

  • वेक्टर:: शुरू(): यह एक इटरेटर देता है जो वेक्टर के पहले तत्व की ओर इशारा करता है।
  • वेक्टर:: अंत(): यह एक इटरेटर देता है जो वेक्टर के पिछले-अंत तत्व की ओर इशारा करता है।
  • वेक्टर::cbegin(): यह vector::begin() के समान है, लेकिन इसमें तत्वों को संशोधित करने की क्षमता नहीं है।
  • वेक्टर::cend(): यह vector::end() के समान है, लेकिन वेक्टर तत्वों को संशोधित नहीं कर सकता।

संशोधक

संशोधक निर्दिष्ट डेटा प्रकार के अर्थ को बदलने के लिए उपयोग किए जाते हैं। यहाँ सामान्य संशोधक दिए गए हैं C++:

  • वेक्टर::पुश_बैक(): यह संशोधक तत्वों को पीछे से धकेलता है।
  • वेक्टर::insert(): किसी निर्दिष्ट स्थान पर वेक्टर में नये आइटम सम्मिलित करने के लिए।
  • वेक्टर::pop_back(): यह संशोधक पीछे से वेक्टर तत्वों को हटा देता है।
  • वेक्टर::मिटाएँ(): इसका उपयोग निर्दिष्ट स्थान से तत्वों की एक श्रृंखला को हटाने के लिए किया जाता है।
  • वेक्टर::स्पष्ट(): यह सभी वेक्टर तत्वों को हटा देता है।

उदाहरण 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

आउटपुट:

संशोधक

कोड का स्क्रीनशॉट यहां दिया गया है:

संशोधक

कोड स्पष्टीकरण:

  1. हमारे कोड में iostream हेडर फ़ाइल शामिल करें। यह हमें कंसोल से पढ़ने और उसमें लिखने की अनुमति देगा।
  2. हमारे कोड में वेक्टर हेडर फ़ाइल शामिल करें। यह हमें वेक्टर के साथ काम करने की अनुमति देगा C++.
  3. std नामस्थान को शामिल करें ताकि इसे कॉल किए बिना इसके क्लासों और फ़ंक्शनों का उपयोग किया जा सके।
  4. main() फ़ंक्शन को कॉल करें जिसके अंदर प्रोग्राम का तर्क जोड़ा जाना चाहिए।
  5. { main() फ़ंक्शन के मुख्य भाग के आरंभ को चिह्नित करता है।
  6. पूर्णांकों के एक सेट को संग्रहीत करने के लिए nums नामक एक वेक्टर घोषित करें।
  7. वेक्टर पर पुनरावृत्ति करने में हमारी मदद करने के लिए एक फ़ॉर लूप बनाएँ। वेरिएबल हमें 1 से वेक्टर तत्वों पर पुनरावृत्ति करने में मदद करेगाst 5 के लिएth तत्वों।
  8. तत्वों को पीछे से वेक्टर num में धकेलें। प्रत्येक पुनरावृत्ति के लिए, यह वेरिएबल a का वर्तमान मान वेक्टर में जोड़ देगा, जो 1 से 5 तक है।
  9. कंसोल पर कुछ पाठ प्रिंट करें
  10. वेक्टर nums के तत्वों पर आरंभ से लेकर अंतिम तत्व तक पुनरावृति करने के लिए एक पुनरावर्तक चर a का उपयोग करें। ध्यान दें कि हम vector::begin() और vector::end() पुनरावर्तक का उपयोग कर रहे हैं।
  11. प्रत्येक पुनरावृत्ति के लिए कंसोल पर इटरेटर चर an द्वारा इंगित मानों को प्रिंट करें।
  12. कंसोल पर कुछ टेक्स्ट प्रिंट करें। \n एक नई लाइन का कैरेक्टर है, वहां से प्रिंट करने के लिए कर्सर को नई लाइन पर ले जाएं।
  13. वेक्टर संख्याओं के तत्वों को आरंभ से लेकर अंतिम तत्व तक पुनरावृत्त करने के लिए एक पुनरावर्तक चर का उपयोग करें। ध्यान दें कि हम vector::cbegin() और vector::cend() पुनरावर्तक का उपयोग कर रहे हैं।
  14. प्रत्येक पुनरावृत्ति के लिए कंसोल पर इटरेटर चर a द्वारा इंगित मानों को प्रिंट करें।
  15. यदि प्रोग्राम सफलतापूर्वक चलता है तो मुख्य फ़ंक्शन को एक मान लौटाना चाहिए।
  16. main() फ़ंक्शन के मुख्य भाग का अंत.

उदाहरण 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

आउटपुट:

संशोधक

कोड का स्क्रीनशॉट यहां दिया गया है:

संशोधक

कोड स्पष्टीकरण:

  1. इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में iostream हेडर फ़ाइल शामिल करें।
  2. अपने कोड में वेक्टर हेडर फ़ाइल को शामिल करें ताकि इसका उपयोग किया जा सके कार्यों.
  3. std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी कक्षाओं का उपयोग किया जा सके।
  4. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इसके बॉडी के अंदर जोड़ा जाना चाहिए।
  5. main() फ़ंक्शन के मुख्य भाग का प्रारंभ.
  6. कुछ पूर्णांक मानों को संग्रहीत करने के लिए nums नामक एक वेक्टर घोषित करें।
  7. वेक्टर nums में 5 तत्व संग्रहित करें। प्रत्येक का मान 1 है।
  8. कंसोल पर कुछ पाठ प्रिंट करें
  9. वेक्टर nums के तत्वों पर पुनरावृति करने के लिए पुनरावर्तक चर a का उपयोग करें।
  10. प्रत्येक पुनरावृत्ति के लिए कंसोल पर वेक्टर संख्याओं के मान प्रिंट करें।
  11. सदिश nums के अंत में मान 2 जोड़ें।
  12. सदिश संख्याओं के आकार को संग्रहीत करने के लिए एक पूर्णांक चर n घोषित करें।
  13. अन्य टेक्स्ट के साथ वेक्टर nums का अंतिम मान प्रिंट करें। इसे 2 लौटाना चाहिए।
  14. सदिश nums से अंतिम तत्व हटाएँ। 2 हटा दिया जाएगा।
  15. कंसोल पर टेक्स्ट प्रिंट करें। \n टेक्स्ट को प्रिंट करने के लिए कर्सर को नई लाइन पर ले जाता है।
  16. वेक्टर nums के तत्वों पर पुनरावृति करने के लिए पुनरावर्तक चर a का उपयोग करें।
  17. प्रत्येक पुनरावृत्ति के लिए कंसोल पर वेक्टर संख्याओं के मान प्रिंट करें।
  18. सदिश nums के आरंभ में मान 7 डालें।
  19. अन्य टेक्स्ट के साथ वेक्टर nums का पहला मान प्रिंट करें। इसे 7 लौटाना चाहिए।
  20. वेक्टर nums से सभी तत्वों को हटाएँ.
  21. सभी सामग्री साफ़ करने के बाद अन्य टेक्स्ट के साथ वेक्टर संख्या का आकार प्रिंट करें। इसे 0 लौटाना चाहिए।
  22. main() फ़ंक्शन के मुख्य भाग का अंत.

क्षमता

किसी सदिश की क्षमता निर्धारित करने के लिए निम्नलिखित फ़ंक्शन का उपयोग करें:

  • आकार() -यह एक वेक्टर में आइटमों की संख्या लौटाता है।
  • अधिकतम आकार() -यह एक वेक्टर द्वारा संग्रहित की जा सकने वाली वस्तुओं की अधिकतम संख्या लौटाता है।
  • क्षमता () –यह किसी वेक्टर को आवंटित संग्रहण स्थान की मात्रा लौटाता है।
  • आकार बदलें () –यह कंटेनर का आकार बदलकर n आइटम रखता है। यदि वेक्टर का वर्तमान आकार n से बड़ा है, तो पीछे के आइटम वेक्टर से हटा दिए जाएँगे। यदि वेक्टर का वर्तमान आकार n से छोटा है, तो वेक्टर के पीछे अतिरिक्त आइटम जोड़े जाएँगे।
  • खाली () –iयदि सदिश रिक्त है तो t सत्य लौटाता है। अन्यथा, यह असत्य लौटाता है।

उदाहरण 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

आउटपुट:

क्षमता

कोड का स्क्रीनशॉट यहां दिया गया है:

क्षमता

कोड स्पष्टीकरण:

  1. इसके फ़ंक्शन का उपयोग करने के लिए हमारे कोड में iostream हेडर फ़ाइल शामिल करें।
  2. इसके फ़ंक्शन का उपयोग करने के लिए अपने कोड में वेक्टर हेडर फ़ाइल शामिल करें।
  3. अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
  4. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
  5. पूर्णांकों को संग्रहीत करने के लिए vector1 नामक एक वेक्टर बनाएं।
  6. 1 से 10 तक के मानों वाला चर x बनाने के लिए for loop का उपयोग करें।
  7. चर x के मानों को सदिश में डालें।
  8. कंसोल पर अन्य पाठ के साथ वेक्टर का आकार प्रिंट करें।
  9. कंसोल पर अन्य पाठ के साथ वेक्टर की क्षमता को प्रिंट करें।
  10. कंसोल पर अन्य टेक्स्ट के साथ-साथ वेक्टर द्वारा धारण की जा सकने वाली अधिकतम संख्या में आइटमों को प्रिंट करें।
  11. वेक्टर का आकार बदलें ताकि उसमें केवल 5 तत्व रह सकें।
  12. अन्य पाठ के साथ वेक्टर का नया आकार प्रिंट करें।
  13. जाँच करें कि क्या वेक्टर रिक्त नहीं है।
  14. यदि वेक्टर रिक्त नहीं है तो कंसोल पर पाठ प्रिंट करें।
  15. यदि वेक्टर रिक्त हो तो क्या करना है, यह बताने के लिए else कथन का उपयोग करें।
  16. यदि वेक्टर रिक्त है तो कंसोल पर प्रिंट करने के लिए पाठ.
  17. प्रोग्राम को सफलतापूर्वक पूरा होने पर मान लौटाना होगा।
  18. main() फ़ंक्शन बॉडी का अंत.

सारांश

  • A C++ वेक्टर एक गतिशील सारणी है जो किसी तत्व को जोड़ने या हटाने पर अपने आप अपना आकार बदलने में सक्षम है।
  • किसी वेक्टर का भंडारण कंटेनर द्वारा स्वचालित रूप से प्रबंधित किया जाता है।
  • एक वेक्टर के तत्वों को सन्निहित भंडारण में संग्रहीत किया जाता है ताकि उन तक पहुंचा जा सके और फिर पुनरावर्तकों का उपयोग करके उनका परिभ्रमण किया जा सके।
  • किसी वेक्टर में नये डेटा का सम्मिलन उसके अंत में किया जाता है।
  • किसी वेक्टर में डेटा डालने में भिन्न समय लगता है।
  • किसी सदिश से किसी तत्व को हटाने में स्थिर समय लगता है।
  • किसी तत्व को आरंभ में सम्मिलित करने या हटाने में रैखिक समय लगता है।
  • लगातार बदलते रहने वाले डेटा तत्वों के साथ काम करते समय वैक्टर का उपयोग किया जाना चाहिए।
  • इसके अलावा, यदि डेटा का आकार शुरू से पहले ज्ञात नहीं है तो आप वेक्टर का उपयोग कर सकते हैं।