C/C++-এ ফাংশন থেকে সরাসরি একাধিক ভ্যালু রিটার্ন করা যায় না। STL-র std::pair (২ ভ্যালু) এবং std::tuple (অনেক ভ্যালু) ব্যবহার করে এই সমস্যা সমাধান করা যায়।
std::tuple - একাধিক টাইপের ভ্যালু ধারণ করে
std::pair - দুটি ভ্যালু ধারণ করে (tuple-এর স্পেশাল কেস)
উদাহরণ কোড
#include <iostream>
#include <tuple>
#include <utility>
#include <string>
using namespace std;
tuple<int, string, char> func_tuple(int x, string y) {
return make_tuple(x, y, 'A');
}
pair<int, string> func_pair(int x, string y) {
return make_pair(x, y);
}
int main() {
int a; string b; char c;
tie(a, b, c) = func_tuple(48, "Hello"); // structured binding (C++17): auto [a,b,c] = ...
auto my_pair = func_pair(89, "World");
cout << "Tuple: (" << a << ", " << b << ", " << c << ")" << endl;
cout << "Pair: (" << my_pair.first << ", " << my_pair.second << ")" << endl;
return 0;
}
আউটপুট
Tuple: (48, Hello, A) Pair: (89, World)
C++17 Structured Binding (আধুনিক সিনট্যাক্স)
auto [a, b, c] = func_tuple(48, "Hello"); auto [x, y] = func_pair(89, "World");
নোট: আর্টিকেলের শেষে nullptr সম্পর্কিত অপ্রাসঙ্গিক কোড রয়েছে, যা উপেক্ষা করা উচিত।