Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में Tuple और Pair का उपयोग करके किसी फ़ंक्शन से कई मान लौटाना

C या C++ में, हम किसी फंक्शन से एक से अधिक मान नहीं लौटा सकते। कई मान वापस करने के लिए, हमें फ़ंक्शन के साथ आउटपुट पैरामीटर प्रदान करना होगा। यहां हम C++ में टपल और पेयर STL का उपयोग करके फ़ंक्शन से कई मान वापस करने के लिए एक और तरीका देखेंगे।

Tuple एक ऐसी वस्तु है जो तत्वों के संग्रह को धारण करने में सक्षम है, जहाँ प्रत्येक तत्व विभिन्न प्रकार का हो सकता है।

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

आइए एक उदाहरण देखें, जहां हम देखेंगे कि कैसे टपल और जोड़े काम कर रहे हैं।

उदाहरण

#include<iostream>
#include<tuple>
#include<utility>
using namespace std;
tuple<int, string, char> my_function_tuple(int x, string y) {
   return make_tuple(x, y, 'A'); // make tuples with the values and return
}
std::pair<int, string> my_function_pair(int x, string y) {
   return std::make_pair(x, y); // make pair with the values and return
}
main() {
   int a;
   string b;
   char c;
   tie(a, b, c) = my_function_tuple(48, "Hello"); //unpack tuple
   pair<int, string> my_pair = my_function_pair(89,"World"); //get pair from function
   cout << "Values in tuple: ";
   cout << "(" << a << ", " << b << ", " << c << ")" << endl;
   cout << "Values in Pair: ";
   cout << "(" << my_pair.first << ", " << my_pair.second << ")" << endl;
}

आउटपुट

Values in tuple: (48, Hello, A)
Values in Pair: (89, World)

तो उपरोक्त कार्यक्रम में क्या समस्या है? NULL को आमतौर पर (void*)0 के रूप में परिभाषित किया जाता है। हमें NULL को इंटीग्रल टाइप में बदलने की अनुमति है। तो my_func(NULL) का फंक्शन कॉल अस्पष्ट है।

यदि हम NULL के स्थान पर nullptr का उपयोग करते हैं, तो हमें नीचे जैसा परिणाम मिलेगा -

उदाहरण

#include<iostream>
using namespace std;
int my_func(int N) { //function with integer type parameter
   cout << "Calling function my_func(int)";
}
int my_func(char* str) { //overloaded function with char* type parameter
   cout << "calling function my_func(char *)";
}
int main() {
   my_func(nullptr); //it will call my_func(char *), but will generate compiler error
}

आउटपुट

calling function my_func(char *)

हम नलप्टर का उपयोग उन सभी जगहों पर कर सकते हैं जहाँ NULL की अपेक्षा की जाती है। NULL की तरह, nullptr को भी किसी भी पॉइंटर टाइप में बदला जा सकता है। लेकिन यह पूर्ण रूप से NULL जैसे अभिन्न प्रकार में परिवर्तनीय नहीं है।


  1. C++ में इनबिल्ट सॉर्ट फ़ंक्शन का उपयोग करके सकारात्मक और नकारात्मक संख्याओं को पुनर्व्यवस्थित करें

    हमें एक पूर्णांक प्रकार की सरणी दी गई है जिसमें धनात्मक और ऋणात्मक दोनों संख्याएँ हैं, मान लीजिए, किसी भी आकार का arr[]। कार्य एक सरणी को इस तरह से पुनर्व्यवस्थित करना है कि एक सरणी के सभी तत्वों को सी ++ एसटीएल के इनबिल्ट सॉर्ट फ़ंक्शन के साथ-साथ कोडिंग और परिणाम को प्रिंट करने की पुनरावर्ती तकनीक

  1. C++ में % ऑपरेटर का उपयोग किए बिना 3 और 5 के गुणज

    हम बिना किसी बाधा के % ऑपरेटर का उपयोग करके गुणकों को ढूंढ सकते हैं। लेकिन, समस्या यह बताती है कि हम % ऑपरेटर का उपयोग नहीं कर सकते। यहां, हम + ऑपरेटर का उपयोग करते हैं। हम पिछले गुणज में 3 या 5 जोड़कर गुणज प्राप्त कर सकते हैं। आइए एक उदाहरण देखें। इनपुट 15 आउटपुट 123 - 345 का गुणज - 56 का गुणज

  1. सी ++ का उपयोग कर ओपनसीवी में छवि कैसे लोड और दिखाएं?

    इस विषय में, हम यह निर्धारित करेंगे कि C++ में OpenCV का उपयोग करके छवियों को कैसे लोड और दिखाया जाए। OpenCV में एक छवि लोड करने और दिखाने के लिए निम्नलिखित कार्यों की आवश्यकता होती है। चटाई: मैट कोई फंक्शन नहीं है। यह एक डेटा संरचना है, एक प्रकार का चर। सी ++ में इंट, चार, स्ट्रिंग वेरिएबल प्रकार