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; просмотров: 692;