23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
|
||||||
1 | ||||||
Как использовать инструкцию for_each ?03.03.2013, 11:59. Показов 13324. Ответов 4
Метки нет (Все метки)
Не могу понять как использовать std::for_each (например для вектора)
Кликните здесь для просмотра всего текста
В примерах часто передается указатель на функцию вида <T> f(int i); почему именно int i, логически мне понятно что int i является дефолтным счетчиком итераций, но почему такая странная реализация... Очень прошу разжевать все виды третьего параметра for_each
0
|
03.03.2013, 11:59 | |
Ответы с готовыми решениями:
4
Как вызвать метод для for_each? Написал вариант реализации алгоритма for_each. Не понимаю, как он работает с функциями Как можно получить итератор на элемент обрабатываемый в лямбде в функции for_each?STL Массив объектов. Как с помощью for_each увеличить некоторое поле объекта на N единиц? |
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|||||||||||
03.03.2013, 12:21 | 2 | ||||||||||
Суть алгоритма for_each - выполнение какого-то действия с каждым элементом диапазона по отдельности. Например, можно их напечатать:
В новом стандарте можно указывать лямбда-функции непосредственно при вызове:
1
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
||||||
03.03.2013, 12:31 | 3 | |||||
Третий параметр — это функция высшего порядка (указатель на функцию, функтор или анонимная функция). Это унарная функция, которая должна быть способна принять аргумент типа содержимого контейнера (то есть, если у вас std::vector<T>, то аргументом функции может быть T, const T&, T& или какой-нибудь R, к которому T можно привести). Вот что делает std::for_each:
1
|
23 / 23 / 3
Регистрация: 15.12.2012
Сообщений: 314
|
||||||
03.03.2013, 13:09 [ТС] | 4 | |||||
Следовательно можно:
template <typename T> void fn(T s) { std::cout << s << std::endl; // конечно если определена функция для потока } std:vector<T> v; ? Сталкивался где-то в примерах с less, как такое можно использовать? Добавлено через 4 минуты Столкнулся с проблемой, если вбить в вектор 1, 2, 3, 4, 5 то при выводе от begin до end появиться шестое значение неопределенного указателя. Как с этим бороться. Кликните здесь для просмотра всего текста
Добавлено через 3 минуты Вранье, что-то набыдлокодил
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
03.03.2013, 14:47 | 5 |
Можно, но при вызове в for_each надо будет задать параметр T явно. Ожидается, что там будет конкретная функция, а не шаблон, а инстанциацию fn нужным типом даже type deduction не сделает.
1
|
03.03.2013, 14:47 | |
03.03.2013, 14:47 | |
Помогаю со студенческими работами здесь
5
Подскажите пожалуйста как использовать __gnu_parallel::for_each для контейнера <list> Как использовать инструкцию if для множества операторов Использовать инструкцию SALC в режиме x64 (инструкция доступна только в режиме x32) Как реализовать экран инструкцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |