русс | укр

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

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


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


Функціональний об’єкт comparePersons()


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


Якщо ми візьмемо версію алгоритму sort(), що має два аргументи

sort(vectPtrsPers.begin(),vectPtrsPers.end() );

то будуть сортуватися тільки вказівники за їх адресами в пам’яті. Таке сортування потрібне вкрай рідко. Щоб впорядкувати об’єкти person за їх іменами, ми скористаємося алгоритмом sort() з трьома аргументами. В якості третього аргументу буде виступати функціональний об’єкт comparePersons()

sort(vectptrspers.begin(),vectptrspers.end(),comparePersons());

Що стосується нашого власного функціонального об’єкту comparePersons(), то його ми визначаємо так:

//функціональний обєкт для порівняння вмісту

class comparePersons

{public:

bool operator() (const person* ptrp1,

const person* ptrp2) const

{return *ptrp1<*ptrp2; }

};

При цьому operator() має два аргументи, що є вказівниками на персональні дані і порівнює значення їх вмісту, а не просто значення вказівників.

 

Функціональний об’єкт displayPerson()

В даній програмі незвичайно здійснюється виведення вмісту контейнеру. Замість протої ітерації з поедементним виводом ми використовуємо функцію for_each() з власним функціональним об’єктом в якості третього аргументу:

for_each(vectptrspers.begin(),vectptrspers.end(),

displayPerson());

Цей вираз приводить до того, що функціональний об’єкт displayPerson() виводиться для кожного елементу даних у векторі. Ось як виглядає об’єкт displayPerson:

//функціональний обєкт для виводу персональних даних

//збережених у вказівниках

class displayPerson

{public:

void operator() (const person* ptrp) const

{ptrp->display(); }

};

Таким чином, за допомогою одного-єдиного виклику функції на екран виводиться вміст всього вектора.

 

 

 

 

 


 


<== попередня лекція | наступна лекція ==>
Створення власних функціональних об’єктів | Підсумок


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