Void main(). cout<<count_if(m, m + 8, bind2nd(less<int>(), 40));

{

int m[8] = {45, 65, 36, 25, 674, 2, 13, 35};

cout<<count_if(m, m + 8, bind2nd(less<int>(), 40));

}

 

У цій програмі для підрахунку кількості елементів застосовується алгоритм стандартної бібліотеки count_if. Для його використання потрібно підключити заголовний файл <functional>. Першими двома параметрами count_if мають бути ітератори, які визначають початок і кінець оброблюваної послідовності. В якості ітераторів масиву використовуються вказівки на його елементи. Третій параметр функції count_if має бути бінарною функцією або функціональним об'єктом. Функція bind2nd перетворює умову порівняння х < у в умову х < 40.

Для того, щоб застосовувати зв’язувачі до звичайних вказівок на функції, потрібні спеціальні перетворювачі, або адаптери. Стандартна бібліотека визначає два функціональні об'єкти – вказівку на унарну функцію pointer_to_unary_function та вказівку на бінарну функцію pointer_to_binary_ function, а також дві функції-адаптери ptr_fun з одним і двома аргументами, які перетворять переданий їм в якості параметру вказівку на функцію у функціональний об'єкт.

Приклад застосування адаптера функції:

 

#include <iostream>

#include <functional>

#include <algorithm>

using namespace std;

struct A{int x, y;};

bool lss(A al,A a2){return al.x < a2.x;}

 








Дата добавления: 2014-12-26; просмотров: 646;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.