Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
#include <vector>
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/if.hpp>
// maybe more?
 
void f1()
{
    namespace lm = boost::lambda;
 
    int arr[] = {5, 1, 6, 10};
    const size_t N = sizeof(arr) / sizeof(arr[0]);
    std::vector<int> v(arr, arr + N);
 
    // классический C++ вариант
    struct div5_functor : public std::unary_function<int, int>  
    {
        int    operator()(int val, int it) const {    return val + ((it % 5) == 0 ? it : 0);    }
    };
 
    int sum = std::accumulate(v.begin(), v.end(), 0, div5_functor());
 
    // вариант с использованием Boost Lambda Library
    sum = std::accumulate(v.begin(), v.end(), 0,  
        lm::_1 + lm::if_then_else_return(lm::_2 % 5 == 0, lm::_2, 0));
 
    printf("sum=%d\n", sum);
}

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 17:07 17-04-2007
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru