जोड़े का C++ वेक्टर

Jore Ka C Vektara



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

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







उदाहरण 1: मूल उपयोग: जोड़ियों के सदिश पर पुनरावृत्ति

आइए एक बुनियादी उदाहरण पर विचार करें जहां हम जोड़ियों का एक वेक्टर बनाते हैं जो छात्रों के नाम और उनकी संबंधित उम्र का प्रतिनिधित्व करते हैं। जोड़े के एक वेक्टर पर पुनरावृत्ति करना एक नियमित वेक्टर पर पुनरावृत्ति के समान है। वेक्टर के भीतर प्रत्येक जोड़ी को पुनः प्राप्त करने के लिए कोई भी इटरेटर या रेंज-आधारित 'फॉर' लूप को नियोजित कर सकता है।



यह उदाहरण एक सार्थक संदर्भ में 'जोड़ियों के वेक्टर' के लिए वाक्यविन्यास दिखाता है।



#शामिल करें
#शामिल <वेक्टर>
#शामिल <उपयोगिता>

मुख्य प्रवेश बिंदु ( ) {

एसटीडी::वेक्टर < एसटीडी::जोड़ी < एसटीडी::स्ट्रिंग, इंट >> छात्रडेटा;

studentData.push_back ( std::make_pair ( 'एडम' , बीस ) ) ;
studentData.push_back ( std::make_pair ( 'बिल' , 22 ) ) ;
studentData.push_back ( std::make_pair ( 'चार्ली' , इक्कीस ) ) ;

std::cout << 'छात्र डेटा: \एन ' ;
के लिए ( स्थिरांक ऑटो & छात्र: छात्रडेटा ) {
std::cout << 'नाम: ' << छात्र.प्रथम << ', आयु: ' << विद्यार्थी.दूसरा << std::endl;
}

वापस करना 0 ;
}


इस C++ कोड स्निपेट में, हम तीन आवश्यक हेडर फ़ाइलों को शामिल करके शुरू करते हैं: इनपुट और आउटपुट संचालन के लिए ' ', वेक्टर कंटेनर का उपयोग करने के लिए '<वेक्टर>', और 'std::' तक पहुंचने के लिए '<उपयोगिता>'। जोड़ी” टेम्पलेट। ये हेडर हमें उन कार्यात्मकताओं का उपयोग करने में सक्षम बनाते हैं जो हमारे प्रोग्राम के लिए आवश्यक हैं।





आगे बढ़ते हुए, मुख्य() फ़ंक्शन के भीतर, हम 'std::vector' कंटेनर का उपयोग करके 'स्टूडेंटडेटा' नामक एक वेक्टर घोषित करते हैं। यह वेक्टर उन जोड़ियों को संग्रहीत करने के लिए डिज़ाइन किया गया है जहां प्रत्येक जोड़ी एक छात्र के नाम ('std::string') और उनकी उम्र ('int' पूर्णांक) को समाहित करती है। फिर, हम 'स्टूडेंटडेटा' वेक्टर को तीन जोड़ियों से भरते हैं। 'पुश_बैक' फ़ंक्शन का उपयोग करके, जोड़े को वेक्टर के अंत में जोड़ा जाता है, गतिशील रूप से इसके आकार को समायोजित किया जाता है। फिर एक लूप 'स्टूडेंटडेटा' के माध्यम से पुनरावृत्त होता है, प्रत्येक छात्र का नाम और उम्र निकालता और प्रिंट करता है। आउटपुट 'छात्र डेटा:' प्रदर्शित करता है जो संरचित प्रतिनिधित्व पर जोर देता है। छात्रों के नाम और उम्र अलग-अलग मुद्रित होते हैं, जो संग्रहीत डेटा को स्पष्ट रूप से प्रस्तुत करते हैं।



उदाहरण 2: जोड़ों के सदिश को क्रमबद्ध करना

जोड़े के वेक्टर को सॉर्ट करना एक सामान्य ऑपरेशन है, खासकर जब कुंजी-मूल्य एसोसिएशन से निपटना हो। इस उद्देश्य के लिए '<एल्गोरिदम>' हेडर से 'std::sort' फ़ंक्शन का उपयोग किया जा सकता है। आइए देखें कि पहले और दूसरे तत्वों के आधार पर जोड़े के वेक्टर को कैसे क्रमबद्ध करें:

#शामिल करें
#शामिल <वेक्टर>
#<एल्गोरिदम>शामिल करें

मुख्य प्रवेश बिंदु ( ) {

एसटीडी::वेक्टर < एसटीडी::जोड़ी < एसटीडी::स्ट्रिंग, इंट >> जानकारी;

जानकारी.पुश_बैक ( std::make_pair ( 'पीटर' , पंद्रह ) ) ;
जानकारी.पुश_बैक ( std::make_pair ( 'डोरा' , 29 ) ) ;
जानकारी.पुश_बैक ( std::make_pair ( 'हन्ना' , बीस ) ) ;

std::cout << 'मूल जानकारी: \एन ' ;
के लिए ( स्थिरांक ऑटो & प्रविष्टि: जानकारी ) {
std::cout << 'नाम: ' << प्रवेश.प्रथम << ', आयु: ' << प्रवेश.दूसरा << std::endl;
}


एसटीडी::सॉर्ट ( जानकारी.शुरू ( ) , जानकारी.अंत ( ) ) ;

std::cout << ' \एन क्रमबद्ध जानकारी: \एन ' ;
के लिए ( स्थिरांक ऑटो & प्रविष्टि: जानकारी ) {
std::cout << 'आयु: ' << प्रवेश.दूसरा << ', नाम: ' << प्रवेश.प्रथम << std::endl;
}

वापस करना 0 ;
}


इस C++ कोड उदाहरण में, हम व्यक्तियों, विशेष रूप से उनके नाम और उम्र से संबंधित डेटा को संग्रहीत और हेरफेर करने के लिए जोड़े के एक वेक्टर के साथ काम कर रहे हैं। हम मुख्य() फ़ंक्शन के भीतर 'जोड़ियों की जानकारी' नामक एक वेक्टर प्रारंभ करते हैं। इसके बाद, हम कुशल जोड़ी निर्माण के लिए 'पुश_बैक' फ़ंक्शन और 'std::make_pair' का उपयोग करते हुए, इस वेक्टर को तीन जोड़ों से भर देते हैं, जिनमें से प्रत्येक में एक अलग व्यक्ति का नाम और उम्र होती है।

हम 'मूल जानकारी' को कंसोल पर आउटपुट करते हैं। इसमें 'जानकारी' वेक्टर के माध्यम से पुनरावृत्ति करना और प्रत्येक जोड़ी के घटकों को प्रिंट करना शामिल है। फिर, हम जोड़ियों के लिए डिफ़ॉल्ट तुलना ऑपरेटर के आधार पर 'जानकारी' वेक्टर को पुनर्व्यवस्थित करने के लिए 'std::sort' एल्गोरिदम का उपयोग करते हैं जो प्रत्येक जोड़ी के पहले तत्व (इस मामले में, नाम) की तुलना करता है। सॉर्टिंग ऑपरेशन के बाद, हम सॉर्ट की गई जानकारी को प्रिंट करके संशोधित 'जानकारी' वेक्टर के माध्यम से फिर से दोहराते हैं। इस बार, आउटपुट आयु-प्रथम क्रम पर जोर देता है, जो छँटाई प्रक्रिया के परिणाम को दर्शाता है।

उदाहरण 3: विभिन्न प्रकार के सदिशों का संयोजन

आपको कुछ ऐसी स्थितियों का सामना करना पड़ सकता है जहां आपको दो वैक्टरों से एक जानकारी को संयोजित करना होगा। जोड़े का एक वेक्टर दो वैक्टरों के तत्वों के बीच संबंध बनाए रखने में मदद कर सकता है।

#शामिल करें
#शामिल <वेक्टर>

मुख्य प्रवेश बिंदु ( ) {
एसटीडी::वेक्टर < एसटीडी::स्ट्रिंग > शहर = { 'न्यूयॉर्क' , 'पेरिस' , 'टोक्यो' } ;
एसटीडी::वेक्टर < int यहाँ > आबादी = { 8175133 , 2140526 , 37435191 } ;

एसटीडी::वेक्टर < एसटीडी::जोड़ी < एसटीडी::स्ट्रिंग, इंट >> शहरजनसंख्या जोड़े;

के लिए ( आकार_टी मैं = 0 ; मैं < एसटीडी::मिनट ( शहर.आकार ( ) , आबादी.आकार ( ) ) ; ++मैं ) {
शहरजनसंख्या जोड़े.पुश_बैक ( { शहरों [ मैं ] , आबादी [ मैं ] } ) ;
}

std::cout << 'शहर-जनसंख्या जोड़े:' << std::endl;
के लिए ( स्थिरांक ऑटो & जोड़ी : शहरजनसंख्या जोड़े ) {
std::cout << 'शहर: ' << जोड़ी.पहले << ', जनसंख्या: ' << जोड़ा.दूसरा << std::endl;
}

वापस करना 0 ;
}


कोड के 'मुख्य' फ़ंक्शन में, दो वैक्टर घोषित किए जाते हैं: शहर के नाम संग्रहीत करने के लिए 'शहर' और संबंधित जनसंख्या मान संग्रहीत करने के लिए 'जनसंख्या'।

एक तीसरा वेक्टर, 'सिटीपॉपुलेशनपेयर', शहरों के जोड़े और उनकी संबंधित आबादी को संग्रहीत करने के लिए परिभाषित किया गया है। प्रत्येक जोड़ी 'std::pair' है जहां 'std::string' शहर के नाम का प्रतिनिधित्व करती है और 'int' जनसंख्या का प्रतिनिधित्व करती है। फिर हम 'std::min' का उपयोग करके वैक्टर (शहरों और आबादी) पर 'फॉर' लूप पुनरावृत्ति का उपयोग करते हैं ताकि यह सुनिश्चित किया जा सके कि लूप दो वेक्टर आकारों में से छोटे तत्वों तक नहीं पहुंच पाता है। लूप के अंदर, शहर-जनसंख्या जानकारी के जोड़े बनाए जाते हैं और 'सिटीपॉपुलेशनपेयर' वेक्टर में जोड़े जाते हैं।

जानकारी को संयोजित करने के बाद, एक और 'फॉर' लूप का उपयोग उन जोड़ियों के माध्यम से पुनरावृत्त करने के लिए किया जाता है जो 'सिटीपॉपुलेशनपेयर' में संग्रहीत हैं। संयुक्त डेटा को फिर 'std::cout' का उपयोग करके मानक आउटपुट पर प्रदर्शित किया जाता है, जो स्पष्ट रूप से प्रत्येक शहर और उसकी संबंधित आबादी का प्रतिनिधित्व करता है।

उदाहरण 4: अधिकतम और न्यूनतम मान ज्ञात करना

किसी डेटासेट के भीतर न्यूनतम और अधिकतम मानों की पहचान करना एल्गोरिथम और सांख्यिकीय संचालन में एक सामान्य आवश्यकता है। हम एक क्रम में अधिकतम और न्यूनतम दोनों मानों का ट्रैक रखने के लिए जोड़े के वेक्टर का उपयोग कर सकते हैं:

#शामिल करें
#शामिल <वेक्टर>
#<एल्गोरिदम>शामिल करें

मुख्य प्रवेश बिंदु ( ) {
एसटीडी::वेक्टर < int यहाँ > संख्या = { 5 , 12 , 18 , 3 , 7 , 4 , 33 } ;

एसटीडी::वेक्टर < एसटीडी::जोड़ी < तू तू >> minMaxPairs;

एसटीडी::सॉर्ट ( नंबर.शुरू ( ) , नंबर.अंत ( ) ) ;

minMaxPairs.push_back ( { नंबर.सामने ( ) , नंबर.वापस ( ) } ) ;

std::cout << 'न्यूनतम-अधिकतम जोड़े:' << std::endl;
के लिए ( स्थिरांक ऑटो & जोड़ी: minMaxPairs ) {
std::cout << 'मिन:' << जोड़ी.पहले << ', मैक्स: ' << जोड़ा.दूसरा << std::endl;
}

वापस करना 0 ;
}


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

इस फ़ंक्शन का लक्ष्य डेटासेट में न्यूनतम और अधिकतम दोनों मानों की पहचान करने की प्रक्रिया को सरल बनाते हुए, तत्वों को आरोही क्रम में व्यवस्थित करना है। सॉर्टिंग ऑपरेशन को रेंज पैरामीटर के रूप में number.begin() और number.end() का उपयोग करके 'संख्या' वेक्टर पर लागू किया जाता है। सॉर्टिंग चरण के बाद, प्रोग्राम गणना किए गए न्यूनतम और अधिकतम मानों को संग्रहीत करने के लिए जोड़े का एक वेक्टर, 'मिनमैक्सपेयर' बनाता है। फिर 'पुश_बैक' फ़ंक्शन को एक एकल जोड़ी जोड़ने के लिए नियोजित किया जाता है जिसमें क्रमबद्ध संख्या वेक्टर के पहले (न्यूनतम) और अंतिम (अधिकतम) तत्व होते हैं। अंत में, प्रोग्राम 'minMaxPairs' वेक्टर के माध्यम से पुनरावृत्ति करके और न्यूनतम और अधिकतम मान प्रदर्शित करके परिणाम आउटपुट करता है।

निष्कर्ष

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