#include <iostream>
using namespace std;
// One function works for all data types. This would work
// even for user defined types if operator '>' is overloaded
template <typename T> T myMax(T x, T y)
{
return (x > y) ? x : y;
}
int main()
{
cout << myMax<int>(3, 7) << endl; // Call myMax for int
cout << myMax<double>(3.0, 7.0)
<< endl; // call myMax for double
cout << myMax<char>('g', 'e')
<< endl; // call myMax for char
return 0;
}
template <class T>
void swap(T & lhs, T & rhs)
{
T tmp = lhs;
lhs = rhs;
rhs = tmp;
}
#include <iostream>
using namespace std;
// One function works for all data types. This would work
// even for user defined types if operator '>' is overloaded
template <typename T>
T myMax(T x, T y)
{
return (x > y)? x: y;
}
int main()
{
cout << myMax<int>(3, 7) << endl; // Call myMax for int
cout << myMax<double>(3.0, 7.0) << endl; // call myMax for double
cout << myMax<char>('g', 'e') << endl; // call myMax for char
return 0;
}
A template is a simple and yet very powerful tool in C++. The simple idea is to
pass data type as a parameter so that we don’t need to write the same code for
different data types.
For example, a software company may need sort() for
different data types. Rather than writing and maintaining the multiple codes,
we can write one sort() and pass data type as a parameter.
C++ adds two new keywords to support templates: ‘template’ and ‘typename’. The
second keyword can always be replaced by keyword ‘class’.
template <class T>
class mypair {
T values [2];
public:
mypair (T first, T second)
{
values[0]=first; values[1]=second;
}
};
/*
C++ template functions are an alternamive way to write a function that
can take different data types. C++ Template functions are only one
function, so if you need to make a change, then it only has to be done
once. Here is an example of a 'get_doubled' templated function:
*/
#include <iostream>
using std::cout;
template <typename T> // Now, T is a type of variable, for this scope:
void say_something(T input) {
cout << input << "
";
}
int main(void) {
say_something(45); // Uses a int
say_something("Hello"); // Uses a string
say_something(90.5); // Uses a float/double
return 0;
}
template <class identifier> function_declaration;
template <typename identifier> function_declaration;
//Example:
template <class Type>
void Swap( Type &x, Type &y)
{
Type Temp = x;
x = y;
y = Temp;
}
template <class T>
void foo(T a, T b) {
...
}
int x,y;
GetMax <int> (x,y);
// templates are used if the logic of function is same but
// it differs due to data type.
/*Here is an example to show how user defined function print
can be made to print data of different data types.*/
template <class T>
T print (T a)
{
cout << a;
}
int main()
{
print('a');
print(1);
}
namespace std {
template<typename t> struct hash<MyClass<t>>
{
size_t operator() (const MyClass<t>& c) const;
}
}
// You can also do things like
template<template<typename t> class type> func_name<type<t>>();
template <class T>//or <typename T> it´s the same
//T can be int, float, double, etc.
//simple use example:
T sum(T a, T b)
{
return a + b;
}
sum(5.0f, 10f);//sum using float
sum(2,3);//sum using int
Code Example |
---|
Cpp :: stoi function in c++ library |
Cpp :: How to write into files in C++ |
Cpp :: prisma client |
Cpp :: quick sort c+++ |
Cpp :: inline function in c++ |
Cpp :: min heap priority queue c++ |
Cpp :: bubblesort c++ |
Cpp :: selection sort c++ algorithm |
Cpp :: hexadecimal or binary to int c++ |
Cpp :: c++ struct |
Cpp :: cpp getter as const |
Cpp :: erase element from vector c++ |
Cpp :: how to find something in a string in c++ |
Cpp :: iterate through list c++ |
Cpp :: C++ code for Dijkstra’s Algorithm |
Cpp :: macros in c++ |
Cpp :: how to use custom array in c++ |
Cpp :: gcc suppress warning inline |
Cpp :: c ++ splitlines |
Cpp :: attention nlp |
Cpp :: c++ get last element in vector |
Cpp :: long pi in c++ |
Cpp :: c++ print |
Cpp :: c++ insert variable into string |
Cpp :: range based for loop c++ |
Cpp :: prevent copy c++ |
Cpp :: cpp ignore warning in line |
Cpp :: flutter single instance app |
Cpp :: intersection between vector c++ |
Cpp :: c++ std map initializer list |