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

Функторы и алгоритмы stl - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ функции пользовательские http://www.cyberforum.ru/cpp-beginners/thread205084.html
Помогите решить задачи в С++ (я в этом начиющий): 1)Вывести на экран таблицу степеней двойки: 2, где n изменяется от -к до 10. Операцию возведения целого числа в целую степень оформить в виде...
C++ Массив работает но криво ( 1 . В одномерном массиве, состоящем из и целых элементов, вычислить: 1) К максимальных элементов массива; 2) Проверить массив на упорядоченность; Преобразовать массив таким образом, чтобы в первой... http://www.cyberforum.ru/cpp-beginners/thread205083.html
C++ пользавательские функции
Помогите решить задачи в С++ (я в этом начиющий): 1)Вывести на экран таблицу степеней двойки: 2, где n изменяется от -к до 10. Операцию возведения целого числа в целую степень оформить в виде...
C++ Работа со строками [String.h]
Написать програму при помощи библиотеки String.h Дана строка S1.....Sn (n за ранее не известно) нужно: 1)определить количество пробелов среди S1....Sn. 2)Выяснить входит ли в последовательность...
C++ пользовательские функции http://www.cyberforum.ru/cpp-beginners/thread205079.html
Помогите решить задачи в С++ (я в этом начиющий): 1)Вывести на экран таблицу степеней двойки: 2, где n изменяется от -к до 10. Операцию возведения целого числа в целую степень оформить в виде...
C++ Переписать пять первых положительных элементов массива подряд в массив У Люди добрые, помогите решить пару задач на С++ на одномерные и двумерные массивы (я новичок и мало что в этом соображаю): 1)Дан массив Х. Переписать пять первых положительных элементов массива... подробнее

Показать сообщение отдельно
volovzi
268 / 170 / 8
Регистрация: 14.03.2010
Сообщений: 501
07.12.2010, 02:55
Никак. Разве что передавать в конструктор функционала число элементов массива.
Запомнить значение в функционале тоже не получится, потому что в эстээлевских алгоритмах объекты передаются по значениям, а не по ссылкам.
Так что либо пиши свою функцию, либо пользуйся std::min_element / std::max_element, либо std::valarray.

Добавлено через 11 минут
В принципе, можно сделать и вот так (функтор записывает максимальное значение во внешнюю переменную, ссылку на которую получил в конструкторе), но так не очень круто:
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
#include <iostream>
#include <vector>
 
template <typename type>
struct maximum {
    maximum (type & storage) : m_value(storage) {}
 
    void operator () (const type & value) { if (value > m_value) m_value = value; }
 
    type & m_value;
};
 
int main (int argc, char * const argv[]) {
    int max_element;
    std::vector<int> v;
    
    for (int i = 0; i < 10; ++i) v.push_back(random() % 100);
    for (int i = 0; i < 10; ++i) std::cout << v[i] << " ";
    std::cout << std::endl;
    
    std::for_each(v.begin(), v.end(), maximum<int>(max_element));
    
    std::cout << max_element;
 
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru