ماڈیول اسباق (1/2)
فنکشن ٹیمپلیٹس
ٹیمپلیٹس C++ میں عام کوڈ لکھنے کی اجازت دیتے ہیں۔ ٹیمپلیٹس کے ذریعے، ہم ایسے فنکشنز یا کلاسز کی وضاحت کر سکتے ہیں جو عام قسم کے پیرامیٹرز پر کام کرتے ہیں، کمپائلر کو درخواست کردہ مخصوص اقسام کے لیے اصل کوڈ تیار کرنے دیتے ہیں۔
فنکشن ٹیمپلیٹ کی تعریف
فنکشن ٹیمپلیٹ کو متعین کرنے کے لیے، ہم فنکشن کی تعریف سے پہلے template کلیدی لفظ، اس کے بعد زاویہ بریکٹ <> میں بند قسم کے پیرامیٹرز کی فہرست کے ساتھ آتے ہیں۔ عام طور پر، typename یا class کو عام قسم کا اعلان کرنے کے لیے استعمال کیا جاتا ہے۔
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
return a + b;
}فنکشن کال اور ٹیمپلیٹ دلیل کٹوتی
جب ہم فنکشن کو کال کرتے ہیں، تو ہم واضح طور پر زاویہ بریکٹ میں قسم کی وضاحت کر سکتے ہیں:
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);تاہم، C++ مرتب کرنے والا عام طور پر پاس شدہ ان پٹ پیرامیٹرز (ٹیمپلیٹ آرگومنٹ ڈیڈکشن) سے **قسم کو خود بخود ** نکالنے کے قابل ہوتا ہے:
int res1 = add(5, 10); // The compiler deduces that T is intخود ہی آزمائیں۔
myMax نامی ایک فنکشن ٹیمپلیٹ کی وضاحت کریں جو عام قسم کے T کے دو پیرامیٹرز لیتا ہے اور دونوں میں سے بڑا واپس کرتا ہے۔
اشارہ دکھائیں۔
`ٹیمپلیٹ <ٹائپ نام T>` لکھ کر شروع کریں اور اس کے بعد دستخط `T myMax(T a, T b)` لکھیں۔
3 کوششوں کے بعد حل دستیاب ہے۔
پرنٹ پیئر کے نام سے ایک فنکشن ٹیمپلیٹ لکھیں جو مختلف عام اقسام T1 اور T2 کے دو پیرامیٹرز لیتا ہے اور std::cout کا استعمال کرتے ہوئے ایک اسپیس سے الگ کیے گئے دو دلائل پرنٹ کرتا ہے۔
اشارہ دکھائیں۔
ٹیمپلیٹ ڈیکلریشن میں دو پیرامیٹرز کی وضاحت ہونی چاہیے: `ٹیمپلیٹ <ٹائپ نام T1، ٹائپ نیم T2>`۔
3 کوششوں کے بعد حل دستیاب ہے۔