Mavzu: Shablon funksiyalar yaratish va ulardan foydalanish
Download 17.21 Kb.
|
Mavzu Shablon funksiyalar yaratish va ulardan foydalanish-fayllar.org
template< typename T >
T min( T a, T b ) { return a < b ? a : b; } Ushbu funktsiyani chaqirish uchun siz shunchaki uning nomidan foydalanishingiz mumkin: min( 1, 2 ); min( 'a', 'b' ); min( string( "abc" ), string( "cde" ) ); Shablon funksiyasini chaqirish Umuman olganda, shablon funksiyasini chaqirish uchun siz barcha shablon parametrlari uchun qiymatlarni kiritishingiz kerak. Buni amalga oshirish uchun shablon nomidan keyin burchakli qavslardagi qiymatlar ro'yxati ko'rsatiladi: int i[] = { 5, 4, 3, 2, 1 }; sort(i, 5); char c[] = "бвгда"; sort( c, strlen( c ) ); sort< int >(c, 5); // ошибка: у sort параметр int[], а не char[] char *ReadString = read<20>(); delete[] ReadString; ReadString = read<30>(); Har bir variant to'plami uchun kompilyator funksiyaning yangi nusxasini yaratadi. Yangi namuna yaratish jarayoni shablonni yaratish deb ataladi. Yuqoridagi misolda kompilyator tartiblash funksiyasi shablonining ikkita ixtisoslashuvini (char va int turlari uchun) va ikkita o'qish shablonining ixtisoslashuvini (BufferSize 20 va 30 qiymatlari uchun) yaratdi. Ikkinchisi behuda bo'lishi mumkin, chunki parametrning har bir mumkin bo'lgan qiymati uchun kompilyator faqat bitta konstanta bilan farq qiladigan ko'proq va ko'proq yangi funktsiyalar namunalarini yaratadi. Parametr qiymatlarini chiqarish Ba'zi hollarda kompilyator funktsiya argumentidan funksiya shablon parametrining qiymatini xulosa qilishi (mantiqiy aniqlashi) mumkin. Masalan, yuqorida tavsiflangan tartiblash funksiyasini chaqirganda, shablon parametrini ko'rsatish shart emas (agar u massiv argumentining element turiga mos kelsa): int i[5] = { 5, 4, 3, 2, 1}; tartiblash (i, 5); // qo'ng'iroqlarni tartiblash char c[] = "bvgda"; sort( c, strlen( c ) ); // qo'ng'iroqlarni tartiblash Olib tashlash yanada murakkab holatlarda ham mumkin. Butun sonli parametrlarga ega sinf shablonlaridan foydalanilganda, bu parametrlar haqida xulosa chiqarish ham mumkin. Masalan: 30>20> Download 17.21 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling