Форум программистов, компьютерный форум, киберфорум
Наши страницы

Непонятки с bind2nd - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вылет при срабатывании деструктора http://www.cyberforum.ru/cpp-beginners/thread943922.html
Собственно говоря вот: class MatrixGraph { int **arcs; int n; public: MatrixGraph(int vertexnumber) //конструктор графа
C++ Задача по вложенным циклам Здравствуйте! Помогите растолковать код, не могу понять какой цикл к чему относится. Вот задача: Напишите программу, использующую вложенные циклы, которая запрашивает у пользователя значение... http://www.cyberforum.ru/cpp-beginners/thread943920.html
C++ Вызов функции сразу для массива всего классов
Добрый день. Я делаю класс Pixel, и в этом классе есть функция Draw(); Так вот я создаю массив этих классов. Вопрос: Как мне вызвать функцию Draw() каждого экземпляра класса, не используя циклы,...
Как осуществить циклический сдвиг элементов квадратной матрицы C++
Помогите осуществить циклический сдвиг элементов квадратной матрицы размерности MXN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последный столбец сверху вниз, из него- в...
C++ Включить dep в новом проекте http://www.cyberforum.ru/cpp-beginners/thread943892.html
как включить dep в новом проекте? использую visual studio 2010 express
C++ прочитать текстовой файл без заморочек Люди!! в билдере для чтения текстового файла делал так TStringList *List = new TStringList; List->LoadFromFile(File_name); потом к List обращался по строкам List есть ли для обычного с++... подробнее

Показать сообщение отдельно
lemegeton
2928 / 1357 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
26.08.2013, 17:38
Цитата Сообщение от SERUYBKR Посмотреть сообщение
почему, если убрать const в операторе(), код не будет работать?
Потому что функция bind2nd первым параметром принимает константную ссылку.
C++
1
2
template <class Operation, class T>
  binder2nd<Operation> bind2nd (const Operation& op, const T& x);
Соответственно, вызов неконстантной функции повлечет за собой discard qualifier.

Цитата Сообщение от SERUYBKR Посмотреть сообщение
И еще, должен быть объязательно функтор? Обычную функцию с bind2nd, использовать нельзя?
Можно, надо только обернуть функцию в функтор. Например, с помощью функции
C++
1
2
3
4
5
template <class Arg, class Result>
  pointer_to_unary_function<Arg,Result> ptr_fun (Result (*f)(Arg));
 
template <class Arg1, class Arg2, class Result>
  pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun (Result (*f)(Arg1,Arg2));
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void some(int val, int to) {
  std::cout << (val *= to) << std::endl;
}
 
 
int main () 
{
    int a[] = { 1, 2, 3, 4, 5 };
 
    std::for_each(a, a + 5, std::bind2nd(std::ptr_fun(some), 2));
 
    //std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
    
    //system("PAUSE");
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru