Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет343/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   339   340   341   342   343   344   345   346   ...   466
Байланысты:
pavlovskaia-jogargy-dengeili

 
pointer_to_binary_function 
 
ptr_fun(Result (*f)(Arg1, Arg2)); 
Функция адаптерін қолдану мысалы:
#include  
#include  
#include  
using namespace std; 
struct A{ 
 
int x, y;
};
bool lss(A a1, A a2){return a1.x < a2.x;} 
int main(){
 
A ma[5] = {{2, 4}, {3, 1}, {2, 2}, {1, 2}, {1, 2}}; 
 
A elem = {3, 0};
 
cout << count_if(ma, ma + 5, bind2nd(ptr_fun(lss), 
 elem)); 
 return 
0;
}


369
Мысалдағы 
lss
функциясы 
А
құрылымының элементтерін салыстыру 
ережесін анықтайды. Стандартты кітапхананың 
count_if
алгоритмі үшінші 
параметр арқылы берілген шартты қанағаттандыратын 
ma
құрылымындағы 
элементтер санын есептейді. Бұл параметр функционалдық объект болып 
табылады, ол 
lss
функциясынан 
ptr_fun
 
адаптерінің көмегімен алынған 
функционалдық объектіден жəне функцияның екінші параметрінің ор-
нына қойылатын айнымалыдан 
bind2nd
байланыстырғышы арқылы 
құрылады. Осының нəтижесінде 
А
құрылымының 
х
өрісі үштен кем болатын 
элементтерінің саны есептеледі (нəтижесі – 4).
Екінші мысал ретінде бұдан бұрын енгізілген (197 б. қараңыз) 
monstr
класының объектілерінен тұратын векторды қарастырамыз. Төменде 
келтірілген программа стандартты кітапхананың 
count_if
алгоритмінің 
(375 б. қараңыз) көмегімен вектордағы денсаулықтары нашарлаған монстрлар 
(құбыжықтар) санын анықтайды (бұл өкінішті жағдай өріс мəні 


Достарыңызбен бөлісу:
1   ...   339   340   341   342   343   344   345   346   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет