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 जैसे अभिन्न प्रकार में परिवर्तनीय नहीं है।