مرکزی مواد پر جائیں
ماڈیول 8 · سبق 1 از 2کورس میں 17/18~12 min
ماڈیول اسباق (1/2)

فنکشن ٹیمپلیٹس

ٹیمپلیٹس C++ میں عام کوڈ لکھنے کی اجازت دیتے ہیں۔ ٹیمپلیٹس کے ذریعے، ہم ایسے فنکشنز یا کلاسز کی وضاحت کر سکتے ہیں جو عام قسم کے پیرامیٹرز پر کام کرتے ہیں، کمپائلر کو درخواست کردہ مخصوص اقسام کے لیے اصل کوڈ تیار کرنے دیتے ہیں۔

فنکشن ٹیمپلیٹ کی تعریف

فنکشن ٹیمپلیٹ کو متعین کرنے کے لیے، ہم فنکشن کی تعریف سے پہلے template کلیدی لفظ، اس کے بعد زاویہ بریکٹ <> میں بند قسم کے پیرامیٹرز کی فہرست کے ساتھ آتے ہیں۔ عام طور پر، typename یا class کو عام قسم کا اعلان کرنے کے لیے استعمال کیا جاتا ہے۔

C++
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
    return a + b;
}

فنکشن کال اور ٹیمپلیٹ دلیل کٹوتی

جب ہم فنکشن کو کال کرتے ہیں، تو ہم واضح طور پر زاویہ بریکٹ میں قسم کی وضاحت کر سکتے ہیں:

C++
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

تاہم، C++ مرتب کرنے والا عام طور پر پاس شدہ ان پٹ پیرامیٹرز (ٹیمپلیٹ آرگومنٹ ڈیڈکشن) سے **قسم کو خود بخود ** نکالنے کے قابل ہوتا ہے:

C++
int res1 = add(5, 10); // The compiler deduces that T is int

خود ہی آزمائیں۔

ورزش#cpp.m8.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

myMax نامی ایک فنکشن ٹیمپلیٹ کی وضاحت کریں جو عام قسم کے T کے دو پیرامیٹرز لیتا ہے اور دونوں میں سے بڑا واپس کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

`ٹیمپلیٹ &lt;ٹائپ نام T>` لکھ کر شروع کریں اور اس کے بعد دستخط `T myMax(T a, T b)` لکھیں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#cpp.m8.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

پرنٹ پیئر کے نام سے ایک فنکشن ٹیمپلیٹ لکھیں جو مختلف عام اقسام T1 اور T2 کے دو پیرامیٹرز لیتا ہے اور std::cout کا استعمال کرتے ہوئے ایک اسپیس سے الگ کیے گئے دو دلائل پرنٹ کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

ٹیمپلیٹ ڈیکلریشن میں دو پیرامیٹرز کی وضاحت ہونی چاہیے: `ٹیمپلیٹ &lt;ٹائپ نام T1، ٹائپ نیم T2>`۔

3 کوششوں کے بعد حل دستیاب ہے۔