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

⚡ स्मार्ट सारांश

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

  • 📦 गतिशील सरणी: A C++ एक निश्चित आकार के स्टैटिक ऐरे के विपरीत, वेक्टर स्वचालित रूप से बढ़ता या घटता है।
  • 🧩 शीर्षक और वाक्य संरचना: वेक्टर हेडर को शामिल करें, फिर वेक्टर घोषित करें। टाइप किए गए तत्वों को संग्रहीत करने के लिए नाम।
  • 🧭 पुनरावर्तक: begin(), end(), cbegin() और cend() वेक्टर तत्वों के बीच पॉइंटर की तरह गति करते हैं।
  • संशोधक: push_back(), insert(), pop_back(), erase() और clear() वेक्टर की सामग्री को बदलते हैं।
  • 📐 क्षमता: size(), capacity(), max_size(), resize(), और empty() स्टोरेज की रिपोर्ट करते हैं या उसे समायोजित करते हैं।
  • 🤖 एआई सहायता: GitHub Copilot और इसी तरह के AI सहायक एक संक्षिप्त टिप्पणी से वेक्टर संचालन का ढांचा तैयार करते हैं।

C++ वेक्टर एसटीएल

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

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

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

वेक्टर के साथ कोड लिखने से पहले, यह जानना मददगार होता है कि वे कब उपयोग करने के लिए सही कंटेनर हैं।

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

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

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

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

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

vector <data-type> name (items)

जैसा कि ऊपर दिखाया गया है, हम वेक्टर कीवर्ड से शुरू करते हैं।

  • RSI डेटा प्रकार यह वेक्टर में संग्रहित किए जाने वाले तत्वों का डेटा प्रकार है।
  • RSI नाम यह वेक्टर या डेटा तत्वों का नाम है।
  • RSI आइटम यह पैरामीटर वेक्टर डेटा के तत्वों की संख्या को दर्शाता है। यह पैरामीटर वैकल्पिक है।

एक बार वेक्टर बन जाने के बाद, इटरेटर आपको इसके तत्वों के बीच घूमने का एक पॉइंटर जैसा तरीका प्रदान करते हैं।

इटरेटर्स

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

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

निम्नलिखित उदाहरण एक वेक्टर को भरता है और फिर परिवर्तनीय और स्थिर दोनों प्रकार के पुनरावर्तकों का उपयोग करके उस पर कार्य करता है।

उदाहरण 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;
}

आउटपुट:

C++ वेक्टर इटरेटर उदाहरण 1 आउटपुट

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

C++ वेक्टर इटरेटर उदाहरण 1 कोड

Code स्पष्टीकरण:

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

संशोधक

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

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

अगले उदाहरण में, इन मॉडिफायर्स को क्रम से लागू करके देखा जाएगा कि एक वेक्टर में क्या परिवर्तन होता है।

उदाहरण 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();			
}

आउटपुट:

C++ वेक्टर संशोधक उदाहरण 2 आउटपुट

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

C++ वेक्टर संशोधक उदाहरण 2 कोड

Code स्पष्टीकरण:

  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 से कम है, तो वेक्टर के पीछे अतिरिक्त आइटम जोड़ दिए जाएंगे।
  • खाली() – यदि वेक्टर खाली है तो यह true लौटाता है। अन्यथा, यह false लौटाता है।

यह अंतिम उदाहरण उपरोक्त क्षमता कार्यों का उपयोग करके एक वेक्टर के भंडारण की रिपोर्ट करता है और उसे समायोजित करता है।

उदाहरण 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;
}

आउटपुट:

C++ वेक्टर क्षमता उदाहरण 3 आउटपुट

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

C++ वेक्टर क्षमता उदाहरण 3 कोड

Code स्पष्टीकरण:

  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() फ़ंक्शन बॉडी का अंत.

अक्सर पूछे जाने वाले प्रश्न

वेक्टर एक गतिशील ऐरे है जो स्वचालित रूप से अपना आकार बदलता है और अपना आकार जानता है, जबकि बिल्ट-इन ऐरे की लंबाई कंपाइल टाइम पर तय होती है। वेक्टर मेमोरी को मैनेज करते हैं; रॉ ऐरे ऐसा नहीं करते।

तेज़ और सीधे एक्सेस के लिए सबस्क्रिप्ट ऑपरेटर, जैसे nums[0], का उपयोग करें। at() सदस्य फ़ंक्शन, जैसे nums.at(0), भी यही काम करता है, लेकिन इंडेक्स अमान्य होने पर out_of_range अपवाद उत्पन्न करता है, जिससे यह अधिक सुरक्षित हो जाता है।

एक वेक्टर घोषित करें जिसके तत्व स्वयं वेक्टर हों, उदाहरण के लिए वेक्टर > ग्रिड। आप इसे कंस्ट्रक्टर या पुश_बैक पंक्तियों का उपयोग करके आकार दे सकते हैं। प्रत्येक आंतरिक वेक्टर स्वतंत्र रूप से बढ़ सकता है, जिससे आपको एक लचीला, आकार परिवर्तनीय मैट्रिक्स मिलता है।

वेक्टर तत्वों को निरंतर मेमोरी में संग्रहीत करता है और इसमें तेज़ रैंडम एक्सेस की सुविधा होती है, जबकि std::list एक डबली लिंक्ड लिस्ट है जिसमें कहीं भी तेज़ी से तत्व डाले या हटाए जा सकते हैं, लेकिन इसमें डायरेक्ट इंडेक्सिंग नहीं होती। अपने एक्सेस पैटर्न के आधार पर चुनाव करें।

एल्गोरिदम हेडर को शामिल करें और std::sort को begin और end इटरेटर के साथ कॉल करें, जैसे sort(nums.begin(), nums.end())। सॉर्टिंग डिफ़ॉल्ट रूप से आरोही क्रम में होती है; एक कस्टम कंपैरेटर या उससे बड़ा मान पास करें। अवरोही क्रम में सॉर्ट करने के लिए ()

जी हां। वेक्टर एक टेम्पलेट है और इसमें स्ट्रिंग, कस्टम क्लास और यहां तक ​​कि अन्य वेक्टर सहित किसी भी प्रकार का मान रखा जा सकता है। कोणीय कोष्ठकों के अंदर तत्व प्रकार घोषित करें, जैसे कि वेक्टर। या वेक्टर .

जी हां। एआई कोडिंग सहायक एक छोटे से संकेत या टिप्पणी को कार्यशील वेक्टर कोड में बदल देते हैं, जिसमें घोषणा, पुश-बैक लूप और पुनरावृति शामिल होती है। सुझाए गए प्रकारों, सीमाओं और क्षमता प्रबंधन की हमेशा समीक्षा करें, क्योंकि एआई परियोजना-विशिष्ट आवश्यकताओं को समझने में चूक कर सकता है।

हां. गिटहब कोपिलॉट यह टाइप करते समय वेक्टर घोषणाओं, पुश_बैक और इंसर्ट कॉल्स, और इटरेटर लूप्स का सुझाव देता है। यह बार-बार दोहराए जाने वाले कोड को अच्छी तरह से संभालता है, हालांकि कंपाइल करने से पहले आपको इंडेक्स, रीसाइज़िंग और लॉजिक की जांच अवश्य कर लेनी चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: