Misol uchun std::vector ni olamiz:
48. Функция параметрлари асосида шаблон параметрларини аниқлаш.
Umuman olganda, my_swap funksiyasini burchakli qavsda turni ko’rsatmasdan turib chaqirish mumkin. Kompilyator turni o’zi hosil qiladi.
Turni ko’rsatmasdan funksiyani chaqirish:
int a = 5;
int b = 10;
my_swap (a, b);
Bu yerda funksiya o’z parametrlariga mos ma’lumot turini qayta ishlaydi. Bu deducing template arguments (argumentlarni chiqarib tashlash) deb ataladi. Yuqoridagilarga asoslangan holda murakkabroq misol uchun shablon funksiyasini yozamiz. Masalan, massiv elementlarini saralash dasturi uchun (bunda “pufaksimon” saralash usulidan foydalanamiz). Tabiiyki, saralash algoritmi barcha massivlar uchun bir xil, lekin massivdagi elementlar turi farq qiladi. elementlar o’rnini almashtirish uchun yuqoridagi my_swap funksiyasidan foydalanamiz.
#include
template < typename T >
void my_swap (T &first, T &second) {
T temp(first); //vaqtincha parametr turga tegishli
first = second;
second = temp; }
template
void bubbleSort(ElementType *arr, size_t arrSize) {
for(size_t i=0; i
for(size_t j=0; j
if (arr[j+1]
my_swap (arr[j], arr[j+1]); }
template
void out_array (const ElementType *arr, size_t arrSize) {
for (size_t i=0; i
std::cout<
std::cout<
int main () {
const size_t n=5 ;
int arr1[n]={10, 5, 7, 3, 4};
double arr2[n]={7.62, 5.56, 38.0, 56.0, 9.0};
Do'stlaringiz bilan baham: |