⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phoenix_control_structures.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
字号:
//  phoenix_style_control_structures.cpp  -- The Boost Lambda Library ------//// Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)// Copyright (C) 2000-2003 Gary Powell (powellg@amazon.com)//// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//// For more information, see www.boost.org// -----------------------------------------------------------------------#include <boost/test/minimal.hpp>    // see "Header Implementation Option"#include "boost/lambda/lambda.hpp"#include "boost/lambda/if.hpp"#include "boost/lambda/loops.hpp"#include <iostream>#include <vector>#include <list>#include <algorithm>#include <cmath>#include <cassert>#include <functional>using namespace boost::lambda;using namespace std;//  If-else, while, do-while, for statementsint test_main(int, char *[]) {    vector<int> v;    v.clear();    v.push_back(1);    v.push_back(2);    v.push_back(3);    v.push_back(4);    v.push_back(5);    v.push_back(6);    v.push_back(7);    v.push_back(8);    v.push_back(9);    v.push_back(10);    int sum = 0;     //////////////////////////////////    for_each(v.begin(), v.end(),        if_(_1 > 3 && _1 <= 8)        [            sum += _1        ]    );    BOOST_CHECK(sum == 4+5+6+7+8);    int gt = 0, eq = 0, lt = 0;    //////////////////////////////////    for_each(v.begin(), v.end(),        if_(_1 > 5)        [            ++var(gt)        ]        .else_        [            if_(_1 == 5)            [                ++var(eq)            ]            .else_            [                ++var(lt)            ]        ]    );    BOOST_CHECK(lt==4);    BOOST_CHECK(eq==1);    BOOST_CHECK(gt==5);    vector<int> t = v;    int counta = 0;    int countb = 0;    //////////////////////////////////    for_each(v.begin(), v.end(),        (            while_(_1--)            [                ++var(counta)            ],            ++var(countb)        )    );        BOOST_CHECK(counta == 55);    BOOST_CHECK(countb == 10);    v = t;    counta = 0; countb = 0;    //////////////////////////////////    for_each(v.begin(), v.end(),        (            do_            [             ++var(counta)            ]            .while_(_1--),            ++var(countb)        )    );    BOOST_CHECK(counta == (2+11)*10/2);    BOOST_CHECK(countb == 10);    v = t;    counta = 0; countb = 0;    //////////////////////////////////    int iii;    for_each(v.begin(), v.end(),        (            for_(var(iii) = 0, var(iii) < _1, ++var(iii))            [              ++var(counta)            ],            ++var(countb)        )    );    BOOST_CHECK(counta == (1+10)*10/2);    BOOST_CHECK(countb == 10);    v = t;    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -