Templates in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Templates in C++ Notes | Basic Computer Engineering | RGPV BTech First Year


Templates in C++

Templates C++ рдХрд╛ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг Feature рд╣реИ рдЬреЛ Generic Programming рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Templates рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдПрдХ рд╣реА Function рдЕрдерд╡рд╛ Class рдХреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдЬреИрд╕реЗ int, float, double рддрдерд╛ char рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ Code рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ Program рдореЗрдВ рд╕рдорд╛рди Logic рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Data Types рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ Data Type рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ Function рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред рдЗрд╕рдХреЗ рд╕реНрдерд╛рди рдкрд░ Template рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ Generic Function рдпрд╛ Generic Class рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ Compiler рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдмрдВрдзрд┐рдд Data Type рдХреЗ рд▓рд┐рдП Generate рдХрд░ рджреЗрддрд╛ рд╣реИред

One Template

тЖУ

Multiple Data Types

тЖУ

Code Reusability

Introduction to Templates

Programming рдХреЗ рджреМрд░рд╛рди рдХрдИ рдмрд╛рд░ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХрд╛ Function рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд▓рд┐рдП рдмрд╛рд░-рдмрд╛рд░ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Integer Numbers рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рд╣реЗрддреБ рдПрдХ Function рддрдерд╛ Floating Point Numbers рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ Function рд▓рд┐рдЦрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди Templates рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред Template рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрдерд╛ Compiler рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрдмрдВрдзрд┐рдд Data Type рдХреЗ рд▓рд┐рдП рдЙрд╕рдХрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ Version рддреИрдпрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ Program рдЕрдзрд┐рдХ Flexible, Reusable рддрдерд╛ Maintainable рдмрди рдЬрд╛рддрд╛ рд╣реИред


Definition of Templates

Template C++ рдХрд╛ рдПрдХ Generic Programming Mechanism рд╣реИ рдЬрд┐рд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдРрд╕реЗ Functions рдПрд╡рдВ Classes рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдХ рд╡рд┐рд╢реЗрд╖ Data Type рддрдХ рд╕реАрдорд┐рдд рди рд╣реЛрдХрд░ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░ рд╕рдХреЗрдВред


Need of Templates

  • Code Reusability рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Duplicate Code рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Generic Programming рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Program рдХреЛ Flexible рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Maintenance рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Development Time рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Programming Errors рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
  • Different Data Types рдХреЛ Support рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Features of Templates

  • Supports Generic Programming.
  • Improves Code Reusability.
  • Works with Multiple Data Types.
  • Provides Compile-Time Type Safety.
  • Reduces Code Duplication.
  • Improves Software Maintainability.
  • Supports Function and Class Templates.
  • Provides Better Performance than Macros.

Advantages of Templates

Advantage Description
Code Reusability рдПрдХ рд╣реА Code рдХреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Less Code рдмрд╛рд░-рдмрд╛рд░ рд╕рдорд╛рди Function рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреАред
Type Safety Compiler Compile Time рдкрд░ Type Checking рдХрд░рддрд╛ рд╣реИред
Easy Maintenance Code Maintain рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
High Performance Runtime Overhead рдмрд╣реБрдд рдХрдо рд╣реЛрддрд╛ рд╣реИред

Types of Templates

рдореБрдЦреНрдп рд░реВрдк рд╕реЗ C++ рдореЗрдВ Templates рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред

Template Type Purpose
Function Template Generic Functions рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Class Template Generic Classes рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

Template Syntax

Template Declare рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП template Keyword рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп Syntax рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╣реИред

template <class T> T functionName(T a, T b) { // Function Body }

рдпрд╣рд╛рдБ T рдПрдХ Generic Data Type рд╣реИ рдЬрд┐рд╕реЗ Compiler рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Data Type рд╕реЗ Replace рдХрд░ рджреЗрддрд╛ рд╣реИред


Function Template

Function Template рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдПрдХ рдРрд╕рд╛ Function рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред Compiler Function рдХреЛ Call рдХрд░рддреЗ рд╕рдордп Passed Arguments рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдЪрд┐рдд Data Type рдХрд╛ Function Generate рдХрд░рддрд╛ рд╣реИред

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

рдЙрдкрд░реЛрдХреНрдд Function int, float, double рддрдерд╛ рдЕрдиреНрдп Compatible Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


Calling Function Template

cout<<maximum(10,20); cout<<maximum(12.5,18.6); cout<<maximum("A","Z");

Compiler рдкреНрд░рддреНрдпреЗрдХ Function Call рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд Data Type рдХрд╛ Version Automatically Generate рдХрд░рддрд╛ рд╣реИред


Class Template

Class Template рдХрд╛ рдЙрдкрдпреЛрдЧ Generic Classes рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА Class рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ Code Reusability рдФрд░ Maintainability рдмрдврд╝ рдЬрд╛рддреА рд╣реИред

template <class T> class Sample { T data; public: void setData(T x) { data=x; } void display() { cout<<data; } };

Using Class Template

Sample<int> obj1; obj1.setData(100); Sample<float> obj2; obj2.setData(25.75);

рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╣реА Class рдЕрд▓рдЧ-рдЕрд▓рдЧ Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╣реИред


Template with Multiple Parameters

рдпрджрд┐ Program рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Generic Data Types рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ Multiple Template Parameters рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

template <class T, class U> class Demo { T x; U y; };

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА Template рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ Variables рдХреЛ рдПрдХ рд╣реА Class рдореЗрдВ Store рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреА рд╣реИред


Default Template Arguments

C++ рдореЗрдВ Template Parameters рдХреЗ рд▓рд┐рдП Default Data Type рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ Programmer рдХрд┐рд╕реА Data Type рдХреЛ Specify рдирд╣реАрдВ рдХрд░рддрд╛, рддреЛ Default Type рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

template <class T=int> class Number { T value; };

Template Specialization

рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ Data Type рдХреЗ рд▓рд┐рдП Generic Template рдХрд╛ рдЕрд▓рдЧ Implementation рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ Template Specialization рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

template<> class Sample<char> { // Specialized Code };

Template Specialization рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ Data Type рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ Logic Implement рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЕрдиреНрдп Data Types рдХреЗ рд▓рд┐рдП Generic Template рдХрд╛рд░реНрдп рдХрд░рддреА рд░рд╣рддреА рд╣реИред


Complete Program using 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)<<endl; cout<<maximum(15.6,12.8)<<endl; return 0; }

Complete Program using Class Template

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

Real Life Applications of Templates

Application Use of Templates
Standard Template Library (STL) vector, list, map, stack рдЖрджрд┐ Generic Containers Templates рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред
Database Libraries Multiple Data Types рдХреЛ Handle рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Game Development Reusable Generic Classes рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Scientific Applications Different Numeric Data Types рдкрд░ рд╕рдорд╛рди Algorithms рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
Enterprise Software Reusable Components рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

Advantages of Templates

  • Code Reusability рдмрдврд╝рддреА рд╣реИред
  • Duplicate Code рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  • Generic Programming рд╕рдВрднрд╡ рд╣реЛрддреА рд╣реИред
  • Compile Time Type Checking рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИред
  • Program рдЕрдзрд┐рдХ Flexible рдмрдирддрд╛ рд╣реИред
  • Maintenance рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИред
  • Development Time рдХрдо рд╣реЛрддрд╛ рд╣реИред
  • Performance рдмреЗрд╣рддрд░ рд░рд╣рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Templates Compile Time рдкрд░ Expand рд╣реЛрддреА рд╣реИрдВред

Limitations of Templates

  • Compilation Time рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред
  • Error Messages рдХрдИ рдмрд╛рд░ рдЬрдЯрд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред
  • Large Projects рдореЗрдВ Generated Code рдХрд╛ Size рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИред
  • Template Syntax рдирдП Programmers рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реЛ рд╕рдХрддреА рд╣реИред
  • Improper Design рд╕реЗ Code Complexity рдмрдврд╝ рд╕рдХрддреА рд╣реИред

Difference between Function Template and Class Template

Function Template Class Template
Generic Functions рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред Generic Classes рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
Function Call рдкрд░ Instantiate рд╣реЛрддреА рд╣реИред Object Create рд╣реЛрдиреЗ рдкрд░ Instantiate рд╣реЛрддреА рд╣реИред
Algorithms рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред Data Structures рдПрд╡рдВ Classes рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреАред

Viva Questions

  1. What is a Template in C++?
  2. Define Generic Programming.
  3. Differentiate between Function Template and Class Template.
  4. What is the syntax of a Function Template?
  5. Explain Class Template with example.
  6. What are Multiple Template Parameters?
  7. What are Default Template Arguments?
  8. Explain Template Specialization.
  9. What are the advantages of Templates?
  10. Where are Templates used in STL?

Exam Oriented Important Questions

  1. Define Templates with suitable example.
  2. Explain Function Template with C++ Program.
  3. Explain Class Template with suitable example.
  4. Discuss Different Types of Templates.
  5. Explain Template Specialization.
  6. Write a Program using Function Template.
  7. Write a Program using Class Template.
  8. Explain Default Template Arguments.
  9. Differentiate between Function Template and Class Template.
  10. Discuss Advantages and Applications of Templates.

Conclusion

Templates C++ рдХреА Generic Programming рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВред рдЗрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА Function рдпрд╛ Class рдХреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ Code Reusability, Maintainability рддрдерд╛ Type Safety рдмрдврд╝рддреА рд╣реИред рдЖрдзреБрдирд┐рдХ C++ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ Libraries, рд╡рд┐рд╢реЗрд╖рдХрд░ Standard Template Library (STL), Templates рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП Templates рдХрд╛ рдЬреНрдЮрд╛рди RGPV B.Tech рдкрд░реАрдХреНрд╖рд╛, Practical рддрдерд╛ Software Development рддреАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИред

Related Articles

Arrays in C++ Notes | One Dimensional & Two Dimensional Arrays with Programs | Basic Computer Engineering | RGPV BTech First Year

Arrays ...

Read More тЖТ

Control Statements in C++ Notes | Decision Making & Looping Statements | Basic Computer Engineering | RGPV BTech First Year

Control...

Read More тЖТ

Expressions in C++ Notes | Types of Expressions, Evaluation & Expression Statements | Basic Computer Engineering | RGPV BTech First Year

Express...

Read More тЖТ

Operators in C++ Notes | Arithmetic, Relational, Logical, Assignment, Bitwise Operators | Basic Computer Engineering | RGPV BTech First Year

Operato...

Read More тЖТ

Program Structure in C++ Notes | Basic Computer Engineering | RGPV BTech First Year

Program...

Read More тЖТ