Активный
- Тема Автор
- #1
Шаблоны позволяют создавать универсальный код. Разберем использование шаблонов.
Функции-шаблоны
Классы-шаблоны
Множественные параметры
Специализация шаблонов
Важные моменты:
- Используйте шаблоны для универсального кода
- Применяйте специализацию при необходимости
- Документируйте требования к типам
- Тестируйте с разными типами
Шаблоны делают код более гибким и переиспользуемым!
Функции-шаблоны
Код:
#include <iostream>
using namespace std;
template <typename T>
T maximum(T a, T b) {
return (a > b) ? a : b;
}
int main() {
cout << maximum(5, 10) << endl; // 10
cout << maximum(3.14, 2.71) << endl; // 3.14
cout << maximum('a', 'z') << endl; // z
return 0;
}
Классы-шаблоны
Код:
#include <iostream>
using namespace std;
template <typename T>
class Stack {
private:
T* data;
int top;
int capacity;
public:
Stack(int size) {
capacity = size;
data = new T[capacity];
top = -1;
}
~Stack() {
delete[] data;
}
void push(T item) {
if(top < capacity - 1) {
data[++top] = item;
}
}
T pop() {
if(top >= 0) {
return data[top--];
}
return T();
}
bool isEmpty() {
return top == -1;
}
};
int main() {
Stack<int> intStack(10);
intStack.push(1);
intStack.push(2);
cout << intStack.pop() << endl; // 2
Stack<string> stringStack(10);
stringStack.push("Hello");
stringStack.push("World");
cout << stringStack.pop() << endl; // World
return 0;
}
Множественные параметры
Код:
#include <iostream>
using namespace std;
template <typename T, typename U>
class Pair {
private:
T first;
U second;
public:
Pair(T f, U s) : first(f), second(s) {}
T getFirst() { return first; }
U getSecond() { return second; }
};
int main() {
Pair<int, string> pair(1, "One");
cout << pair.getFirst() << " - " << pair.getSecond() << endl;
return 0;
}
Специализация шаблонов
Код:
#include <iostream>
using namespace std;
template <typename T>
void print(T value) {
cout << value << endl;
}
// Специализация для строк
template <>
void print<string>(string value) {
cout << "String: " << value << endl;
}
int main() {
print(123); // 123
print(3.14); // 3.14
print(string("Hello")); // String: Hello
return 0;
}
Важные моменты:
- Используйте шаблоны для универсального кода
- Применяйте специализацию при необходимости
- Документируйте требования к типам
- Тестируйте с разными типами
Шаблоны делают код более гибким и переиспользуемым!