русс | укр

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

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


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


Функції користувача замість функціональних об’єктів


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


Функціональні об’єкти можуть працювати тільки з базовими класами С++ і з класами, для яких визначені відповідні оператори (<,>,+,-,==) Це не завжди зручно, оскільки інколи доводиться працювати з типами даних, для яких така умова не виконується. В такому випадку можна визначити власну функцію користувача для функціонального об’єкту. Наприклад, оператор < не визначений для звичайних рядків char*, але можна написати функцію, що використовує порівняння і використовувати її адресу (ім’я) замість функціонального об’єкту. Програма 15.7 показує, як просортувати масив рядків char*.

#include<iostream>

#include<conio>

#include<string>

#include<algorithm>

using namespace std;

char* names[]={"Sergij","Andrij","Ulana","Tetana","Ivan","Ivanna"};

bool alpha_comp(char*,char*); //оголошення

int main()

{ sort(names,names+6,alpha_comp); //сортування рядків

for(int j=0;j<6;j++)

cout<<names[j]<<endl;

getch();

return 0;

}

bool alpha_comp(char* s1,char* s2)

{

return(strcmp(s1,s2)<0?true:false);

}

Програма 15.7

 

Третім параметром алгоритму sort() в даному випадку є адреса функції alpha_comp(), яка порівнює два рядки типу char* і повертає true чи false залежно від того, чи правильно для них виконується лексиграфічне порівняння.

В даному прикладі можна було обійтися без функції користувача, замінивши рядки типу char* рядками типу string. Для типу string є вбудовані функціональні об’єкти такі як less<>() i greater<>().

 


<== попередня лекція | наступна лекція ==>
Функціональні об’єкти | Додавання _if до аргументів


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