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

bind1st и bind2nd - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.05.2010, 12:21     bind1st и bind2nd #1
Проблемы с std::bind1st и std::bind2nd
Пишу такой код:
C++
1
2
3
4
5
6
7
8
9
void foo(int &t, int &t)
{
}
 
int main()
{
  int a[10];
  std::for_each(a, a + 10, std::bind1st(foo, 1));
}
А в ответ получаю гору STL ошибок
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2010, 12:21     bind1st и bind2nd
Посмотрите здесь:

std::bind1st: is not a class, struct, or union type C++
C++ Отличие bind2nd от binder2nd
C++ Непонятки с bind2nd
C++ Ошибка номер c2535 в адапторе bind2nd
C++ Использование bind2nd
C++ Забиндить второй аргумент функции, используя std::bind2nd

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1345 / 878 / 51
Регистрация: 02.01.2009
Сообщений: 2,642
Записей в блоге: 1
18.05.2010, 12:41     bind1st и bind2nd #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <functional>
 
using namespace std;
 
 
class func_: public binary_function<int, int, void>{
public:
    void operator () (int a, int b) const { if(a > b) cout << a << " "; }
};
int main(){
 
    int arr[10] = {-1, -2, -3, -4, -5, 5, 4, 3, 2, 1};
 
    for_each(arr, arr + 10, bind2nd(func_(), 0));
 
    return 0;
}
http://codepad.org/70qFsChI
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.05.2010, 12:45  [ТС]     bind1st и bind2nd #3
ISergey, Спасибо, получается, что обязательно должен быть класс с перегруженным operator() ?
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
18.05.2010, 12:49     bind1st и bind2nd #4
адаптеры требуют для работы определения типов

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename _Rs, typename _Arg1, typename _Arg2> class Foo : std::binary_function<_Arg1, _Arg2, _Rs>
{
public:
    _Rs operator () ( _Arg1, _Arg2 )
    {
    }
};
 
 
int _tmain( int argc, _TCHAR* argv[] )
{
    std::for_each( a, a + 5, std::bind2nd(Foo, 10) );
}
Yandex
Объявления
18.05.2010, 12:49     bind1st и bind2nd
Ответ Создать тему

Метки
bind1st, bind2nd, std
Опции темы

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