Usare i template in C++
In C++ i templates ci permettono, sostanzialmente, di usare i generics.
Quindi possiamo creare delle funzioni con tipi generici, e poi usarle a nostro piacimento.
In questo articolo ne vediamo un paio di esempi.
Cominciamo da un function template:
#include <iostream>
using namespace std;
template <typename T> T getMax(T a, T b) {
return (a > b) ? a : b;
}
int main() {
cout << getMax<int>(3, 5) << endl;
cout << getMax<char>('g', 'e') << endl;
return 0;
}
Come potete vedere la funzione ci restituisce il valore "maggiore".
Ma la richiamiamo due volte:
- una volta passandogli dei numeri
- la seconda passando dei char
Esistono anche i class template:
#include <iostream>
using namespace std;
template <typename T> class MyArray {
private:
T* ptr;
int size;
public:
MyArray(T arr[], int s);
void print();
};
template <typename T> MyArray<T>::MyArray(T arr[], int s) {
ptr = new T[s];
size = s;
for (int i = 0; i < size; i++)
ptr[i] = arr[i];
}
template <typename T> void MyArray<T>::print() {
for (int i = 0; i < size; i++) {
cout << " " << *(ptr + i);
}
cout << endl;
}
int main() {
int arr[5] = { 1, 2, 3, 4, 5 };
MyArray<int> a(arr, 5);
a.print();
return 0;
}
Enjoy!
c++ template
Commentami!