C++-এ টেমপ্লেট ফাংশন ওভারলোডিং ব্যবহার করে কম্পাইল-টাইমে মাল্টিডাইমেনশনাল অ্যারের ডাইমেনশন বের করা সম্ভব।
এলগরিদম
template() ফাংশন ব্যবহার করে অ্যারের বর্তমান আকার বের করা হয়। তারপর রিকার্সিভলি কল করে শেষ ডাইমেনশন পর্যন্ত পৌঁছানো হয়।
উদাহরণ কোড
#include <iostream>
using namespace std;
// বেস কেস: ১D অ্যারে
template <typename T, size_t N>
void printDimensionsOfArray(const T (&a)[N]) {
cout << N;
}
// রিকার্সিভ কেস: ২D বা অধিক ডাইমেনশন
template <typename T, size_t N, size_t M>
void printDimensionsOfArray(const T (&a)[N][M]) {
cout << "Dimensions of the Array is: " << N << " x ";
printDimensionsOfArray(a[0]); // প্রথম রোয়া পাস করুন (size M)
}
int main() {
int a[6][7];
printDimensionsOfArray(a);
return 0;
}
আউটপুট
Dimensions of the Array is: 6 x 7
ব্যাখ্যা:
- প্রথম টেমপ্লেট ১D অ্যারে হ্যান্ডেল করে (সাইজ প্রিন্ট করে)۔
- দ্বিতীয় টেমপ্লেট ২D অ্যারে হ্যান্ডেল করে — প্রথম ডাইমেনশন
Nপ্রিন্ট করে, তারপরa[0](যাT[M]টাইপ) রিকার্সিভলি পাস করে। - এটি কম্পাইল-টাইমে কাজ করে, রানটাইম ওভারহেড নেই।
- ৩D বা অধিক ডাইমেনশনের জন্য আরও ওভারলোড যোগ করতে হয়।