మాడ్యూల్ పాఠాలు (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మీరే ప్రయత్నించండి
సాధారణ రకం T యొక్క రెండు పారామితులను తీసుకుని, రెండింటిలో ఎక్కువ భాగాన్ని తిరిగి ఇచ్చే myMax అనే ఫంక్షన్ టెంప్లేట్ను నిర్వచించండి.
సూచనను చూపించు
`T myMax(T a, T b)` సంతకం తర్వాత `టెంప్లేట్ <typename T>` రాయడం ద్వారా ప్రారంభించండి.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
ప్రింట్పెయిర్ అనే ఫంక్షన్ టెంప్లేట్ను వ్రాయండి, ఇది విభిన్న సాధారణ రకాలైన T1 మరియు T2 యొక్క రెండు పారామితులను తీసుకుంటుంది మరియు std::coutని ఉపయోగించి స్పేస్తో వేరు చేయబడిన రెండు ఆర్గ్యుమెంట్లను ప్రింట్ చేస్తుంది.
సూచనను చూపించు
టెంప్లేట్ ప్రకటన తప్పనిసరిగా రెండు పారామితులను పేర్కొనాలి: `టెంప్లేట్ <typename T1, టైప్నేమ్ T2>`.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది