русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Додавання _if до аргументів


Дата додавання: 2014-04-22; переглядів: 858.


Деякі аргументи мають версії з закінченням _if. Їм потрібний додатковий параметр, який називається предикатом і є функціональним об’єктом чи функцією. Наприклад, алгоритм find() знаходить всі елементи, рівні вказаному значенню. Можна написати функцію, яка працює з алгоритмом find_if() і знаходить елементи з якимись додатковими параметрами.

В прикладі 15.8 використовуються об’єкти класу string. Алгоритму find_if() передається функція користувача isDon, щоб можна було знайти перший рядок в масиві, що має значення Ivan

#include<iostream>

#include<conio>

#include<string>

#include<algorithm>

using namespace std;

bool isDon(string name)

{return name==”Ivan”;}

 

string names[]={“Sergij”,”Andrij”,”Ulana”,”Tetana”,”Ivan”,”Ivanna”};

int main()

{string* ptr;

ptr=find_if(names,names+5,isDon);

if(ptr==names+5)

cout<<”Ivana nemae v spysku\n”;

else

cout<<”Ivan zapysanyj v pozycii “

<<(ptr-names)

<<” v spysku \n”;

getch();

return 0;

}

 

Програма 15.8

 

Адреса функції isDon() – третій елемент алгоритму find_if(), а перші два, як звичайно, задають діапазон пошуку від початку до «післяостаннього» елементу масиву.

Алгоритм find_if() застосовує функцію is_Don() до кожного елементу з діапазону. Якщо is_Don() повертає true для якого-небудь елемента, то find_if() повертає значення ітератора для цього елементу. В протилежному випадку повертається вказівник на адресу «Післяостаннього» елементу масиву.

_if-версії є також в інших алгоритмів, наприклад, count(), replace(), remove().

 


<== попередня лекція | наступна лекція ==>
Функції користувача замість функціональних об’єктів | Алгоритм for_each()


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн