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

Операторная ф-ция - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалить числа превышающее N http://www.cyberforum.ru/cpp-beginners/thread204276.html
удаление чисел превышающих N, остальные вывести на экран
C++ пишет ошибку отсутствия заголовка функции вообще пишет ошибку отсутствия заголовка функции... вот код #include "stdafx.h" #include <stdio.h> #include <windows.h> void zadanie1 (); void zadanie2 (); void zadanie3 (); void zadanie4 (); http://www.cyberforum.ru/cpp-beginners/thread204273.html
C++ лабораторная по теме файлы
Дан бинарный файл, содержащий числа а1, b1, a2, b2... Каждая пара чисел a и b определяет числитель и знаменатель натуральной дроби a/b. Проверить образуют ли дроби арифметическую прогрессию. По результатам проверки вывести на экран соответствующее сообщение.
C++ Системы счисления. Немного додумать.
Здравствуйте. В общем возникла небольшая проблема. Запарился на моменте, который выделеный красным цветом.(ориентироваться особо на него не нужно, там бред :)). Требуется сделать так: перебираем по очереди элементы строки. Если элемент меньше 10, то запомнить его, если больше 10, то прибавляем(или отнимаем) 55 и запоминаем. Вроде как тут нужно записать все это в массив char. Прибавляем(или...
C++ По массиву http://www.cyberforum.ru/cpp-beginners/thread204249.html
Дан массив A(n) упорядоченный по возрастанию, и число a, о котором известно, что оно не равно ни одному из элементов массива, больше первого и меньше последнего.Найти 2 элемента ( их индексы и значения) в интервале между которыми находится значение a. ( условный оператор не использовать ).
C++ Упорядочить строки матрицы по возростанию их максимальных элементов Здравствуйте! Помогите пожалуюста разобраться в данном задании "Дана матрица NxM.Упорядочить её строки по возростанию их максимальных элементов" вот мой код, но программа не работает, можете показать где у меня допущена ошибка и обьяснить работу 3-ей части программы, т.е "Построение строк матрицы по возрастанию их максимальных членов". Заранее большое спасибо. #include <iostream.h>... подробнее

Показать сообщение отдельно
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
06.12.2010, 02:57     Операторная ф-ция
1. Так:
C++
1
generator(n)
ты объявляешь объект n класса generator.
C++
1
generator(x)(n); // что будет?
2. generate может быть определена следующим образом:
C++
1
2
3
4
5
6
template <typename Iter, typename GEN> void generate(const Iter& From, const Iter& To, GEN gen)
{
     for (Iter i = From; i != To; ++i) {
          *i = gen();
     }
}
как бы эта функция вызывает функцию или оператор operator() для каждого элемента коллекции.
generator(n) создает объект с оператором (), именно этот оператор и будет вызываться в функции generate, потому что GEN будет равно generator.
в этом примере шаблон инстанцируется в:

C++
1
2
3
4
5
6
void generate(const vector<int>::iterator& From, const vector<int>::iterator& To, generator gen)
{
     for (Iter i = From; i != To; ++i) {
          *i = gen(); // вот тут уже понятно, что gen это имя объекта, а не функции.
     }
}
примерно того же эффекта можно добиться определив функцию:
C++
1
2
3
4
5
6
int generator()
{
    static int x = 0;
    x++;
    return x;
}
тогда шаблон инстанцируется в:
C++
1
2
3
4
5
6
void generate(const vector<int>::iterator& From, const vector<int>::iterator& To, int (*gen)(void))
{
     for (Iter i = From; i != To; ++i) {
          *i = gen(); // очевидно вызов функции
     }
}
 
Текущее время: 02:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru