Shablonlar (Templates)
C++ Shablonlari
Shablonlar turli ma'lumot turlari bilan ishlaydigan funksiya yoki sinf yozish imkonini beradi.
Ular kodni takrorlashdan qochishga yordam beradi va dasturlarni moslashuvchan qiladi.
C++ Funksiya shablonlari
template kalit so'zidan foydalanib funksiya shabloni yaratish mumkin:
SINTAKSIS
template <typename T>
return_type function_name(T parameter) {
// kod
}Tma'lumot turi uchun o'rinbosar (masalan,int,floatva boshqalar)To'rniga boshqa nom ham ishlatish mumkin, lekinTkeng tarqalgan
MISOL
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout << add<int>(5, 3) << "\n";
cout << add<double>(2.5, 1.5) << "\n";
return 0;
}Yuqoridagi misolda add<int>(5, 3) kompilyatorga T uchun int ishlatishni aytadi, add<double>(2.5, 1.5) esa double ishlatishni aytadi.
C++ Sinf shablonlari
Shablonlardan har qanday ma'lumot turi bilan ishlaydigan sinflar yaratish uchun ham foydalanish mumkin:
SINTAKSIS
template <typename T>
class ClassName {
// T ishlatadigan a'zolar va metodlar
};Quyidagi misol har qanday ma'lumot turining qiymatini saqlash va ko'rsatish mumkin bo'lgan Box shablon sinfini belgilaydi:
MISOL
template <typename T>
class Box {
public:
T value;
Box(T v) {
value = v;
}
void show() {
cout << "Qiymat: " << value << "\n";
}
};
int main() {
Box<int> intBox(50);
Box<string> strBox("Salom");
intBox.show();
strBox.show();
return 0;
}Bu misol esa turli turdagi ikkita qiymatni saqlaydigan Pair shablon sinfini belgilaydi:
MISOL
template <typename T1, typename T2>
class Pair {
public:
T1 first;
T2 second;
Pair(T1 a, T2 b) {
first = a;
second = b;
}
void display() {
cout << "Birinchi: " << first << ", Ikkinchi: " << second << "\n";
}
};
int main() {
Pair<string, int> person("John", 30);
Pair<int, double> score(51, 9.5);
person.display();
score.display();
return 0;
}Nima uchun shablonlar ishlatiladi?
Shablonlar sizga quyidagilarni beradi:
- Turli turlar uchun bir xil mantiqni takrorlamaslik
- Toza va qayta ishlatiladigan kod yozish
- Umumiy dasturlashni (generic programming) qo'llab-quvvatlash
ESLATMA
Shablonlar ishlatilgan joyda aniqlanishi kerak (odatda .h faylda).
