Форум программистов, компьютерный форум CyberForum.ru

Где применяется bind - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
29.12.2012, 10:24     Где применяется bind #1
Можете пожалуйста привести пример, где boost::bind (или сейчас уже std::bind) необходим и без него не обойтись.
Просто, понимаю как работает, но не понимаю где можно применить.
Спасибо за ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2012, 10:24     Где применяется bind
Посмотрите здесь:

std::bind C++
STL List - где он применяется? C++
C++ bind + map
Bind + string::front C++
C++ Перегруженные функции и bind
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.12.2012, 10:36     Где применяется bind #2
Приходит в голову такой пример...
Допустим, какая-то функция принимает в качестве аргумента функтор и ожидает, что при его вызове будет достаточно одного параметра. Допустим, в качестве такого функтора мы хотим передать нестатический метод класса, принимающий один параметр. Но в этом случае наш метод требует двух аргументов - указатель на объект, от которого он будет вызываться и сам аргумент функции. В данном случае с помощью boost::bind мы сможем создать функтор, который будет принимать всего один аргумент, как и ожидается.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
29.12.2012, 10:46     Где применяется bind #3
C++
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
31
32
struct data {
    std::string name;
    int number;
    data( std::string const &name_, int num )
        :name(name_)
        ,number(num)
    {}
};
 
 
int main()
{
 
    std::vector<data> name_list;
    name_list.push_back(data("1", 1));
    name_list.push_back(data("2", 2));
    name_list.push_back(data("3", 3));
    name_list.push_back(data("4", 4));
    name_list.push_back(data("5", 5));
 
    std::vector<data>::const_iterator element
        ( std::find_if(name_list.begin(),
                       name_list.end(),
                       boost::bind(
                          std::equal_to<std::string>(),
                          std::string("1"), // найдем структуру, в которой name == "1";
                          boost::bind(&data::name, _1) )) );
 
    if( element != name_list.end() )
        std::cout << "name was found\n";
    return 0;
}
0x10
29.12.2012, 11:04
  #4

Не по теме:

Ну два бинда выглядят как какой-то изврат...

C++
1
2
3
4
5
std::vector<data>::const_iterator element(
       std::find_if(name_list.begin(), name_list.end(),
         [&](const data& x) {
            return std::equal_to<std::string>(x.name, std::string("2"));
         }));

DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
29.12.2012, 11:07     Где применяется bind #5
Вот здесь немного инфы: http://www.rsdn.ru/?article/cpp/boost.bind.xml
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
29.12.2012, 11:21  [ТС]     Где применяется bind #6
Тоесть в основном bind используется в качестве функтора или предиката, я правильно понял?
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
29.12.2012, 12:09     Где применяется bind #7
Можно так сказать: std::bind это нововведения нового стандарта С++11, которое пришло на замену устаревшим стандартным адаптерам функций типа bind1st, bind2nd, ptr_fun, mem_fun_ref и т. д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 22:50     Где применяется bind
Еще ссылки по теме:

C++ Проверить объект в std::bind на живучесть
Static обьект, в каких случаях применяется? C++
C++ Разобраться с std::bind, плейсхолдеры

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,645
Записей в блоге: 17
29.12.2012, 22:50     Где применяется bind #8
Цитата Сообщение от Eugine Посмотреть сообщение
Просто, понимаю как работает, но не понимаю где можно применить.
Там где надо применить функтур в алгоритме требующим функтур с другим количеством параметров.

Добавлено через 6 минут
Но дело в том что например в в примере villu, легче было бы использовать лямбды.

Добавлено через 7 часов 13 минут
Думаю вот хороший пример применения bind- a boost::thread объясните нубу
Yandex
Объявления
29.12.2012, 22:50     Где применяется bind
Ответ Создать тему
Опции темы

Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru