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



Pdf көрінісі
бет499/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   495   496   497   498   499   500   501   502   ...   642
Байланысты:
pavlovskaia-jogargy-dengeili

template

 

class pointer_to_unary_function : 

 

   public unary_function

 

   public:

      explicit pointer_to_unary_function(Result 

         (*f)(Arg));

      Result operator()(Arg x) const;    // f(x) қайтарады

 };

template

 pointer_to_unary_function

Result> 

 

   ptr_fun(Result (*f)(Arg)); 

template

 

class pointer_to_binary_function : public 

 

   binary_function

 

   public:

 

   explicit pointer_to_binary_function(Result (*f)

         (Arg1, Arg2)); 

 

   Result operator()(Arg1 x, Arg2 y) const;

 };

template  

 

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 б. қараңыз) көмегімен вектордағы денсаулықтары нашарлаған монстрлар 

(құбыжықтар) санын анықтайды (бұл өкінішті жағдай өріс мəні 



health < 30

 

болғанда орын алады делік). Қысқаша болуы үшін кластың тек қажетті əдістері 



ғана көрсетілген:



Достарыңызбен бөлісу:
1   ...   495   496   497   498   499   500   501   502   ...   642




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

    Басты бет