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 рдХрд░ рджреЗрддрд╛ рд╣реИред
тЖУ
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 рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╣реИред
рдпрд╣рд╛рдБ T рдПрдХ Generic Data Type рд╣реИ рдЬрд┐рд╕реЗ Compiler рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Data Type рд╕реЗ Replace рдХрд░ рджреЗрддрд╛ рд╣реИред
Function Template
Function Template рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдПрдХ рдРрд╕рд╛ Function рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред Compiler Function рдХреЛ Call рдХрд░рддреЗ рд╕рдордп Passed Arguments рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдЪрд┐рдд Data Type рдХрд╛ Function Generate рдХрд░рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд Function int, float, double рддрдерд╛ рдЕрдиреНрдп Compatible Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Calling Function Template
Compiler рдкреНрд░рддреНрдпреЗрдХ Function Call рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд Data Type рдХрд╛ Version Automatically Generate рдХрд░рддрд╛ рд╣реИред
Class Template
Class Template рдХрд╛ рдЙрдкрдпреЛрдЧ Generic Classes рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА Class рд╡рд┐рднрд┐рдиреНрди Data Types рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ Code Reusability рдФрд░ Maintainability рдмрдврд╝ рдЬрд╛рддреА рд╣реИред
Using Class Template
рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рд╣реА Class рдЕрд▓рдЧ-рдЕрд▓рдЧ Data Types рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╣реИред
Template with Multiple Parameters
рдпрджрд┐ Program рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ Generic Data Types рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ Multiple Template Parameters рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА Template рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ Variables рдХреЛ рдПрдХ рд╣реА Class рдореЗрдВ Store рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреА рд╣реИред
Default Template Arguments
C++ рдореЗрдВ Template Parameters рдХреЗ рд▓рд┐рдП Default Data Type рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ Programmer рдХрд┐рд╕реА Data Type рдХреЛ Specify рдирд╣реАрдВ рдХрд░рддрд╛, рддреЛ Default Type рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Template Specialization
рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ Data Type рдХреЗ рд▓рд┐рдП Generic Template рдХрд╛ рдЕрд▓рдЧ Implementation рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ Template Specialization рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Template Specialization рдХреА рд╕рд╣рд╛рдпрддрд╛ рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ Data Type рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ Logic Implement рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЕрдиреНрдп Data Types рдХреЗ рд▓рд┐рдП Generic Template рдХрд╛рд░реНрдп рдХрд░рддреА рд░рд╣рддреА рд╣реИред
Complete Program using Function Template
Complete Program using Class Template
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
- What is a Template in C++?
- Define Generic Programming.
- Differentiate between Function Template and Class Template.
- What is the syntax of a Function Template?
- Explain Class Template with example.
- What are Multiple Template Parameters?
- What are Default Template Arguments?
- Explain Template Specialization.
- What are the advantages of Templates?
- Where are Templates used in STL?
Exam Oriented Important Questions
- Define Templates with suitable example.
- Explain Function Template with C++ Program.
- Explain Class Template with suitable example.
- Discuss Different Types of Templates.
- Explain Template Specialization.
- Write a Program using Function Template.
- Write a Program using Class Template.
- Explain Default Template Arguments.
- Differentiate between Function Template and Class Template.
- 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 тЖТ