Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Связывающие адаптеры.

Posted on 10 июля, 201310 июля, 2013 by admin

Связывающие адаптеры это классы, которые позволяют использовать двухаргументные (бинарные) функциональные объекты как одноаргументные (унарные) путем связывания (binding) одного из аргументов со значением .

От нам допустим нужно написать предикат — проверки чисел которые меньше допустим семи. Мы должны свой предикат определить. Щас попробуем это сделать. От мы определили свой собственный функтор.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <algorithm>
using std::find_if;
 
//функтор
struct obj
{
int d;
explicit obj(int a):d(a){}
bool operator()(int a){return (d>a);}
};
 
int main()
{
vector<int> v;
for(int i=0;i<10;i++)
v.push_back(i);
 
vector<int>::iterator it;
 
it=find_if(v.begin(),v.end(),obj(7));
 
cout <<"*it= "<<*it<<endl;
 
return 0;
}

Но библиотека СТЛ предлагает нам свои собственные средства для этого, щас попробуем переделать примерчик с использованием средств СТЛ.

А от мы это сделали с помощью средств СТЛ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using std::cout;
using std::endl;
#include <vector>
using std::vector;
#include <algorithm>
using std::find_if;
#include <functional>
using std::bind2nd;
using std::less;
 
int main()
{
vector<int> v;
for(int i=0;i<10;i++)
v.push_back(i);
vector<int>::iterator it;
 
//делаем поиск по предикату
it=find_if(v.begin(),v.end(),bind2nd(less<int>(),7));
 
//вывод результата поиска
if(it!=v.end())
cout <<"*it= "<<*it<<endl;//0
 
return 0;
}

Примерчик явно наглядно показывает что как делать. Мне конечно не охота их все переписывать там их несколько bind2nd это фигня которая делает из двух аргументного функционального объекта одноаргументный, это как мы заметили он просто на место второго аргумента подставляет цифру 7.

Есть еще bind1nd эта фигня уже из одноаргументного функтора делает двухаргументный. От подумываю разобрать его что ли, честно я с ними не сталкивался. Да наверно лучше разобрать все эти связывающие адаптеры для полноты картины или создать раздел, где будут разобраны все адаптеры с примером использования каждого из них. Ну наверно так и сделаю, токо не щас, щас мне как то не сильно охота этим заниматся, да и вообще наверно нужно весь functional рассмотреть более подробно.

[youtube]http://www.youtube.com/watch?v=ouKj-7bc-ZQ[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • ExchiNuGs к записи Программка для заполнения форума на vBulletin 3.8.7
  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
©2021 Kselax.ru Theme by ThemeGiant