कार्यकारी सारांश: ऐसा मत करो।
j_random_hacker का उत्तर आपको बताता है कि यह कैसे करना है। हालाँकि, मैं यह भी बताना चाहूंगा कि आपको ऐसा नहीं करना चाहिए । टेम्पलेट्स का पूरा बिंदु यह है कि वे किसी भी संगत प्रकार को स्वीकार कर सकते हैं, और जावा शैली प्रकार की बाधाएं टूट जाती हैं।
जावा के प्रकार की बाधाएं एक बग है जो एक विशेषता नहीं है। वे वहाँ हैं क्योंकि जावा जेनेरिक पर टाइप मिटा देता है, इसलिए जावा यह पता नहीं लगा सकता है कि अकेले प्रकार के मापदंडों के आधार पर तरीकों को कैसे कॉल किया जाए।
दूसरी ओर C ++ में ऐसा कोई प्रतिबंध नहीं है। टेम्प्लेट पैरामीटर प्रकार उन ऑपरेशंस के साथ संगत हो सकते हैं, जिनके साथ उनका उपयोग किया जाता है। एक सामान्य आधार वर्ग होना जरूरी नहीं है। यह पायथन के "डक टाइपिंग" के समान है, लेकिन संकलन समय पर किया गया है।
टेम्प्लेट की शक्ति दिखाने वाला एक सरल उदाहरण:
// Sum a vector of some type.
// Example:
// int total = sum({1,2,3,4,5});
template <typename T>
T sum(const vector<T>& vec) {
T total = T();
for (const T& x : vec) {
total += x;
}
return total;
}
यह योग फ़ंक्शन किसी भी प्रकार के वेक्टर को जोड़ सकता है जो सही संचालन का समर्थन करता है। यह इंटिमेंट / लॉन्ग / फ्लोट / डबल, और यूज़र डिफ़ाइंड न्यूमेरिक प्रकार दोनों के साथ काम करता है जो + = ऑपरेटर को ओवरलोड करते हैं। हेक, आप स्ट्रिंग्स में शामिल होने के लिए भी इस फ़ंक्शन का उपयोग कर सकते हैं, क्योंकि वे + = का समर्थन करते हैं।
आदिमों की कोई बॉक्सिंग / अनबॉक्सिंग आवश्यक नहीं है।
ध्यान दें कि यह T () का उपयोग करके T के नए उदाहरण भी बनाता है। यह अंतर्निहित इंटरफ़ेस का उपयोग करके C ++ में तुच्छ है, लेकिन प्रकार की बाधाओं के साथ जावा में वास्तव में संभव नहीं है।
हालांकि C ++ टेम्प्लेट में स्पष्ट प्रकार की बाधाएं नहीं होती हैं, फिर भी वे सुरक्षित हैं, और कोड के साथ संकलन नहीं करेंगे जो सही संचालन का समर्थन नहीं करता है।