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



Pdf көрінісі
бет342/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   338   339   340   341   342   343   344   345   ...   465
Байланысты:
аибм сплюс

 
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   ...   338   339   340   341   342   343   344   345   ...   465




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

    Басты бет