Templates in C++ Notes | Function Template, Class Template, Generic Programming & Template Advantages | Basic Computer Engineering | RGPV BTech First Year

Templates in C++ Notes | Function Template, Class Template, Generic Programming & Template Advantages | Basic Computer Engineering | RGPV BTech First Year


Templates in C++

Template C++ Programming का एक अत्यंत महत्वपूर्ण Feature है जिसका उपयोग Generic Programming के लिए किया जाता है। Template की सहायता से ऐसा Code लिखा जा सकता है जो विभिन्न Data Types (जैसे int, float, double, char आदि) के साथ बिना अलग-अलग Functions या Classes बनाए कार्य कर सकता है।

Templates Code Reusability को बढ़ाते हैं तथा Programmer को एक ही Logic बार-बार लिखने की आवश्यकता नहीं होती। C++ में मुख्य रूप से दो प्रकार के Templates होते हैं — Function Template तथा Class Template। दोनों Generic Programming का आधार हैं।

RGPV B.Tech First Year के Basic Computer Engineering Subject में Templates in C++ अत्यंत महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में Function Template, Class Template, Generic Programming तथा Template Advantages से संबंधित प्रश्न नियमित रूप से पूछे जाते हैं।

Generic Logic



Template



Different Data Types



Reusable Code

Introduction to Templates

सामान्यतः यदि किसी समान Logic को int, float तथा double Data Types के लिए उपयोग करना हो, तो प्रत्येक Data Type के लिए अलग-अलग Function अथवा Class बनानी पड़ती है। इससे Code की Length बढ़ जाती है तथा Maintenance कठिन हो जाती है।

Templates इस समस्या का समाधान प्रदान करते हैं। Template की सहायता से केवल एक Generic Function अथवा Generic Class बनाई जाती है जो विभिन्न Data Types के साथ Automatically कार्य कर सकती है।


What is Template?

Template C++ का ऐसा Mechanism है जिसके द्वारा Generic Functions तथा Generic Classes बनाई जाती हैं। Compiler आवश्यकता के अनुसार Template का उपयोग करके संबंधित Data Type के लिए Function अथवा Class Generate कर देता है।

template <class T>

ऊपर दिया गया Statement Template Declaration को दर्शाता है। यहाँ T एक Generic Type Parameter है जो Compile Time पर वास्तविक Data Type से Replace हो जाता है।


What is Generic Programming?

Generic Programming ऐसी Programming Technique है जिसमें Program को किसी एक विशेष Data Type के लिए नहीं बल्कि अनेक Data Types के लिए विकसित किया जाता है। Templates Generic Programming का सबसे महत्वपूर्ण आधार हैं।

Generic Programming द्वारा Code अधिक Flexible, Reusable तथा Maintainable बन जाता है। आधुनिक C++ Libraries जैसे STL (Standard Template Library) भी Templates पर आधारित हैं।


Need of Templates

जब समान Algorithm को अनेक Data Types के लिए उपयोग करना हो, तब Templates सबसे उपयुक्त समाधान होते हैं। इससे Code Duplication समाप्त हो जाती है तथा Development Time कम हो जाता है।

  • Code Reusability बढ़ाने के लिए।
  • Generic Programming Implement करने के लिए।
  • Duplicate Code हटाने के लिए।
  • Development Time कम करने के लिए।
  • Maintenance को आसान बनाने के लिए।
  • Different Data Types के लिए समान Logic उपयोग करने के लिए।
  • Professional Software Development के लिए।

Advantages of Templates

Advantage Description
Code Reusability एक ही Code अनेक Data Types के लिए उपयोग किया जा सकता है।
Generic Programming Generic Functions एवं Generic Classes विकसित की जा सकती हैं।
Less Code Duplicate Code लिखने की आवश्यकता समाप्त हो जाती है।
Easy Maintenance Code को Maintain एवं Update करना सरल हो जाता है।
Type Safety Compile Time पर Type Checking होती है।

Characteristics of Templates

Templates की कुछ महत्वपूर्ण विशेषताएँ (Characteristics) होती हैं जो C++ में Generic Programming को संभव बनाती हैं। Template Compiler द्वारा Compile Time पर वास्तविक Data Type के अनुसार Generate किया जाता है।

  • Templates Generic Programming को Support करते हैं।
  • एक ही Code अनेक Data Types के लिए उपयोग किया जा सकता है।
  • Compile Time पर Type Checking होती है।
  • Code Reusability बढ़ती है।
  • Duplicate Functions तथा Classes बनाने की आवश्यकता समाप्त हो जाती है।
  • Program अधिक Flexible तथा Maintainable बनता है।
  • Function तथा Class दोनों के लिए Templates बनाए जा सकते हैं।

Function Template

Function Template ऐसा Generic Function होता है जो विभिन्न Data Types के साथ कार्य कर सकता है। Compiler आवश्यकता अनुसार Function की उचित Copy Generate कर देता है।

यदि किसी Program में समान Logic केवल Data Type बदलने के कारण कई बार लिखा जा रहा हो, तो Function Template सबसे उपयुक्त समाधान होता है।


Syntax of Function Template

template <class T> T maximum(T a, T b) { if(a>b) return a; else return b; }

ऊपर दिए गए उदाहरण में T एक Generic Type Parameter है जो Function Call के समय वास्तविक Data Type से Replace हो जाता है।


Example of Function Template

#include<iostream> using namespace std; template <class T> T maximum(T a, T b) { return (a>b)?a:b; } int main() { cout << maximum(10,20); cout << endl; cout << maximum(10.5,20.8); return 0; }

Output

20 20.8

इस उदाहरण में एक ही maximum() Function Template को Integer तथा Floating Point दोनों प्रकार के Data के लिए उपयोग किया गया है।


Working of Function Template

Function Template



Compiler



Actual Data Type



Generated Function



Program Execution

जब Function Template को Call किया जाता है, तब Compiler Argument के Data Type को पहचानकर उसी प्रकार का Function Automatically Generate करता है। इसी कारण Function Template को Generic Function भी कहा जाता है।


Advantages of Function Template

Advantage Description
Reusable Code एक ही Function अनेक Data Types के लिए उपयोग किया जा सकता है।
Less Coding अलग-अलग Functions लिखने की आवश्यकता नहीं होती।
Compile Time Type Checking Compiler Data Types की जाँच करता है।
Easy Maintenance Program को Update करना सरल होता है।
Generic Programming Different Data Types के लिए समान Logic लागू किया जा सकता है।

Class Template

Class Template ऐसा Generic Class होता है जिसे विभिन्न Data Types के साथ उपयोग किया जा सकता है। Class Template की सहायता से एक ही Class को अलग-अलग Data Types के लिए पुनः उपयोग (Reuse) किया जा सकता है। Compiler आवश्यकता अनुसार संबंधित Data Type के लिए Class Generate कर देता है।

यदि किसी Program में समान Structure वाली Class केवल Data Type बदलने के कारण कई बार बनाई जा रही हो, तो Class Template सबसे उपयुक्त समाधान होता है।


Syntax of Class Template

template <class T> class Sample { T data; };

ऊपर दिए गए उदाहरण में T Generic Type Parameter है। Compile Time पर Compiler इसे वास्तविक Data Type जैसे int, float अथवा double से Replace कर देता है।


Example of Class Template

#include<iostream> using namespace std; template <class T> class Demo { T value; public: Demo(T x) { value = x; } void display() { cout << value; } }; int main() { Demo<int> d1(100); Demo<float> d2(25.75); d1.display(); cout << endl; d2.display(); return 0; }

Output

100 25.75

इस उदाहरण में एक ही Demo Class Template का उपयोग Integer तथा Floating Point दोनों प्रकार के Data के लिए किया गया है।


Template Parameters

Template में उपयोग होने वाले Generic Types को Template Parameters कहा जाता है। सामान्यतः इन्हें T, U, V आदि नामों से लिखा जाता है। Compile Time पर Compiler इन Parameters को वास्तविक Data Types से Replace कर देता है।

template <class T> template <typename T>

C++ में class तथा typename दोनों Keywords Template Declaration में समान उद्देश्य के लिए उपयोग किए जा सकते हैं।


Multiple Template Parameters

यदि Program में एक से अधिक Generic Data Types की आवश्यकता हो, तो Multiple Template Parameters Declare किए जा सकते हैं।

template <class T, class U> class Result { T marks; U grade; };

ऊपर दिए गए उदाहरण में T तथा U दो अलग-अलग Generic Data Types को दर्शाते हैं।


Function Template vs Normal Function

Function Template Normal Function
Generic Programming को Support करता है। केवल निश्चित Data Type के लिए कार्य करता है।
एक ही Function अनेक Data Types के लिए उपयोग किया जा सकता है। प्रत्येक Data Type के लिए अलग Function लिखना पड़ता है।
Code Reusability अधिक होती है। Code Duplication अधिक होती है।
Compile Time पर Function Generate होता है। पहले से निश्चित Function होता है।
Maintenance आसान होती है। Maintenance अपेक्षाकृत कठिन होती है।

Template Specialization (Basic Introduction)

Template Specialization C++ का ऐसा Feature है जिसकी सहायता से किसी विशेष Data Type के लिए Template का अलग Implementation लिखा जा सकता है। सामान्यतः Template सभी Data Types के लिए समान Logic का उपयोग करता है, लेकिन यदि किसी विशेष Data Type के लिए अलग व्यवहार (Behavior) आवश्यक हो, तो Template Specialization का उपयोग किया जाता है।

Template Specialization मुख्य रूप से Complex Applications तथा Standard Template Library (STL) में उपयोग की जाती है।

template <> class Demo<char> { };

ऊपर दिए गए उदाहरण में char Data Type के लिए अलग Template Specialization बनाई गई है।


Working of Class Template

Class Template



Template Parameter



Compiler



Actual Data Type



Generated Class

जब Class Template का Object बनाया जाता है, तब Compiler दिए गए Data Type के अनुसार नई Class Generate करता है। इस पूरी प्रक्रिया के कारण Programmer को अलग-अलग Data Types के लिए अलग Classes लिखने की आवश्यकता नहीं होती।


Class Template vs Normal Class

Class Template Normal Class
Generic Programming को Support करती है। केवल निश्चित Data Type के लिए कार्य करती है।
एक ही Class अनेक Data Types के लिए उपयोग की जा सकती है। प्रत्येक Data Type के लिए अलग Class बनानी पड़ती है।
Code Reusability अधिक होती है। Code Duplication अधिक होती है।
Compile Time पर Class Generate होती है। पहले से निश्चित Class होती है।
Maintenance सरल होती है। Maintenance अपेक्षाकृत कठिन होती है।

Advantages of Class Template

  • एक ही Class विभिन्न Data Types के लिए उपयोग की जा सकती है।
  • Duplicate Code लिखने की आवश्यकता समाप्त हो जाती है।
  • Compile Time पर Type Safety प्राप्त होती है।
  • Program अधिक Flexible तथा Reusable बनता है।
  • Maintenance तथा Modification आसान हो जाते हैं।
  • Generic Programming को प्रभावी ढंग से लागू किया जा सकता है।
  • Large Software Projects में Development Time कम हो जाता है।

Real Life Example of Templates

मान लीजिए किसी Student Management System में Roll Number int, Marks float तथा Fees double Data Type में Store करनी हो। यदि समान Processing Logic प्रत्येक Data Type पर लागू करनी हो, तो अलग-अलग Functions अथवा Classes बनाने के बजाय Function Template एवं Class Template का उपयोग किया जा सकता है। इससे Program छोटा, Reusable तथा Maintainable बनता है।


Applications of Templates

Templates का उपयोग आधुनिक C++ Programming में व्यापक रूप से किया जाता है। Generic Programming की सहायता से एक ही Logic को अनेक Data Types के साथ उपयोग किया जा सकता है। इसी कारण Templates Professional Software Development तथा Standard Template Library (STL) का आधार हैं।

Application Purpose
Standard Template Library (STL) Vector, List, Stack, Queue तथा Map जैसी Generic Containers बनाने के लिए।
Mathematical Libraries विभिन्न Numeric Data Types पर समान Calculations करने के लिए।
Sorting Algorithms एक ही Sorting Logic को विभिन्न Data Types पर लागू करने के लिए।
Searching Algorithms Generic Searching Functions विकसित करने के लिए।
Scientific Software Large Scale Numerical Processing के लिए।
Database Applications Different Data Types के Records को समान Logic से Process करने के लिए।

Advantages of Templates

  • Code Reusability में अत्यधिक वृद्धि होती है।
  • Generic Programming को सरल बनाता है।
  • Duplicate Code लिखने की आवश्यकता समाप्त हो जाती है।
  • Compile Time Type Checking होने से Type Safety बढ़ती है।
  • Development Time तथा Maintenance Cost कम हो जाती है।
  • Large Software Projects में Code अधिक Organized रहता है।
  • Different Data Types के लिए अलग-अलग Functions एवं Classes बनाने की आवश्यकता नहीं होती।
  • Performance बेहतर रहती है क्योंकि Compiler Compile Time पर Code Generate करता है।

Limitations of Templates

  • Template Syntax शुरुआती Programmers के लिए जटिल हो सकती है।
  • Compile Time बढ़ सकता है।
  • Compiler Error Messages कई बार समझना कठिन होता है।
  • अत्यधिक Templates Program की Complexity बढ़ा सकते हैं।
  • Template Specialization का सही उपयोग न होने पर Code Maintain करना कठिन हो सकता है।
  • Large Template Libraries Program Size बढ़ा सकती हैं।

Best Practices for Using Templates

  • Templates का उपयोग केवल Generic Logic के लिए करें।
  • Meaningful Template Parameter Names का उपयोग करें।
  • Unnecessary Template Specialization से बचें।
  • Compile Time Errors को ध्यानपूर्वक Analyze करें।
  • Reusable Generic Functions तथा Classes विकसित करें।
  • Templates के साथ Proper Documentation बनाए रखें।
  • Large Projects में STL Containers का अधिक उपयोग करें।

Real Life Example

मान लीजिए किसी Bank Management System में Account Number int, Balance double तथा Customer ID string Data Types में Store किए जाते हैं। यदि समान Searching, Sorting तथा Display Logic सभी Data Types के लिए लागू करना हो, तो अलग-अलग Functions लिखने के बजाय Templates का उपयोग किया जाता है। इससे Code छोटा, Reusable तथा Maintain करना आसान हो जाता है।


Summary

Templates C++ का एक महत्वपूर्ण Feature है जो Generic Programming को संभव बनाता है। Templates की सहायता से एक ही Function अथवा Class विभिन्न Data Types के साथ कार्य कर सकती है। इससे Code Reusability बढ़ती है, Duplicate Code कम होता है तथा Program अधिक Flexible एवं Maintainable बनता है। C++ में मुख्य रूप से Function Template तथा Class Template का उपयोग किया जाता है।

Concept Description
Template Generic Programming के लिए उपयोग किया जाने वाला C++ Feature।
Function Template एक ही Function को अनेक Data Types के लिए उपयोग करने की सुविधा।
Class Template एक ही Class को विभिन्न Data Types के लिए उपयोग करने की सुविधा।
Generic Programming एक ही Logic को अनेक Data Types पर लागू करने की तकनीक।
Template Parameter Generic Type जिसे Compile Time पर वास्तविक Data Type से Replace किया जाता है।
Multiple Template Parameters एक से अधिक Generic Data Types का उपयोग।
Template Specialization विशेष Data Type के लिए अलग Implementation प्रदान करना।
STL Templates पर आधारित Standard Template Library।

Important Viva Questions

  1. Template क्या है?
  2. Generic Programming क्या है?
  3. Function Template क्या होता है?
  4. Class Template क्या होता है?
  5. Template Parameter क्या होता है?
  6. Function Template एवं Normal Function में क्या अंतर है?
  7. Class Template एवं Normal Class में क्या अंतर है?
  8. Template Specialization क्या है?
  9. Multiple Template Parameters क्या होते हैं?
  10. Templates के मुख्य Advantages क्या हैं?

University Examination Important Questions

  1. Template क्या है? Generic Programming को उदाहरण सहित समझाइए।
  2. Function Template को Syntax एवं Program सहित समझाइए।
  3. Class Template को उदाहरण सहित समझाइए।
  4. Function Template एवं Normal Function में अंतर लिखिए।
  5. Class Template एवं Normal Class में अंतर लिखिए।
  6. Template Parameters तथा Multiple Template Parameters को समझाइए।
  7. Template Specialization क्या है? इसका उपयोग लिखिए।
  8. Templates के Applications तथा Advantages लिखिए।
  9. Templates की Limitations लिखिए।
  10. STL में Templates की भूमिका समझाइए।

Exam Tips

  • हमेशा याद रखें कि Templates Generic Programming के लिए उपयोग किए जाते हैं।
  • Function Template विभिन्न Data Types के लिए एक ही Function उपलब्ध कराता है।
  • Class Template विभिन्न Data Types के लिए एक ही Class उपलब्ध कराती है।
  • template <class T> तथा template <typename T> दोनों मान्य Syntax हैं।
  • Template Parameters तथा Multiple Template Parameters परीक्षा के महत्वपूर्ण Topics हैं।
  • Function Template तथा Class Template के कम से कम पाँच Differences याद रखें।
  • Template Specialization तथा STL पर Short Notes अक्सर पूछे जाते हैं।

Conclusion

Templates in C++ आधुनिक Object Oriented Programming का एक अत्यंत महत्वपूर्ण Feature है जो Generic Programming को संभव बनाता है। Function Templates एवं Class Templates की सहायता से एक ही Logic को अनेक Data Types के साथ उपयोग किया जा सकता है, जिससे Code Reusability, Maintainability तथा Type Safety में वृद्धि होती है। Template Specialization, Multiple Template Parameters तथा Standard Template Library (STL) जैसे Concepts Professional Software Development में अत्यधिक उपयोग किए जाते हैं। Banking Software, Scientific Computing, Data Structures, Algorithms तथा Enterprise Applications में Templates का व्यापक उपयोग होता है। RGPV B.Tech First Year के विद्यार्थियों के लिए यह Topic Theory, Practical एवं Viva तीनों दृष्टिकोण से अत्यंत महत्वपूर्ण है।

Related Articles

Arrays of Objects in C++ Notes | Object Array, Declaration, Initialization & Examples | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More →

Object as Function Argument & Returning Object from Function in C++ Notes | Pass Object to Function, Return Object & Examples | Basic Computer Engineering | RGPV BTech First Year

Object ...

Read More →

Pointers to Objects in C++ Notes | Object Pointer, Accessing Members using Pointer & Examples | Basic Computer Engineering | RGPV BTech First Year

Pointer...

Read More →

Dynamic Memory Allocation in C++ Notes | new & delete Operators, Heap Memory, Dynamic Objects & Examples | Basic Computer Engineering | RGPV BTech First Year

Dynamic...

Read More →

this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year

this Po...

Read More →