שיעורי מודול (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++ מסוגל בדרך כלל להסיק את הסוג באופן אוטומטי מפרמטרי הקלט שעברו (Template Argument Deduction):
int res1 = add(5, 10); // The compiler deduces that T is intנסה זאת בעצמך
הגדר תבנית פונקציה בשם myMax שלוקחת שני פרמטרים מהסוג הגנרי T ומחזירה את הגדול מבין השניים.
הצג רמז
התחל בכתיבת `template <typename T>` ואחריו החתימה `T myMax(T a, T b)`.
הפתרון זמין לאחר 3 ניסיונות
כתוב תבנית פונקציה בשם printPair שלוקחת שני פרמטרים מסוגים גנריים שונים T1 ו-T2 ומדפיסה את שני הארגומנטים מופרדים ברווח באמצעות std::cout.
הצג רמז
הצהרת התבנית חייבת לציין שני פרמטרים: `template <typename T1, typename T2>`.
הפתרון זמין לאחר 3 ניסיונות