मुख्य सामग्री पर जाएं
मॉड्यूल 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;टाइपनाम टी>` और उसके बाद हस्ताक्षर `टी मायमैक्स(टी ए, टी बी)` लिखकर प्रारंभ करें।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम#cpp.m8.l1.e2
प्रयास: 0लोड हो रहा है...

printPair नाम का एक फ़ंक्शन टेम्प्लेट लिखें जो विभिन्न सामान्य प्रकार T1 और T2 के दो पैरामीटर लेता है और std::cout का उपयोग करके एक स्थान से अलग किए गए दो तर्कों को प्रिंट करता है।

संपादक लोड हो रहा है...
संकेत दिखाएँ

टेम्प्लेट घोषणा में दो पैरामीटर निर्दिष्ट होने चाहिए: `टेम्पलेट &lt;टाइपनेम टी1, टाइपनेम टी2>`।

3 प्रयासों के बाद समाधान उपलब्ध है