Function and Class Templates
Templates let you write generic code that works with any data type. The compiler generates specific versions for each type used.
Example
// Function template
template<typename T>
T findMax(T a, T b) {
return (a > b) ? a : b;
}
cout << findMax(10, 20) << endl; // 20
cout << findMax(3.14, 2.71) << endl; // 3.14
cout << findMax('a', 'z') << endl; // 'z'
// Class template
template<typename T>
class Stack {
private:
vector<T> data;
public:
void push(const T& item) { data.push_back(item); }
T pop() {
T top = data.back();
data.pop_back();
return top;
}
bool empty() const { return data.empty(); }
int size() const { return data.size(); }
};
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
cout << intStack.pop() << endl; // 2
Stack<string> strStack;
strStack.push("hello"); 