• Boost.Foreach


    类似perl和c#的foreach,BOOST_FOREACH给我们带来了一种简单而有效的遍历数组的方式。

    让我们首先来看个简单的例子:

    #include <string>
    #include <iostream>
    #include <boost/foreach.hpp>

    int main()
    {
        std::string hello( "Hello, world!" );

        BOOST_FOREACH( char ch, hello )
        {
            std::cout << ch;
        }

        return 0;
    }

    和传统的for或者std::for_each()算法比起来,BOOST_FOREACH显得更加优雅而简洁。

    BOOST_FOREACH支持遍历所有被Boost.Range识别为序列类型的对象,通常包括如下几种:

    1. STL容器
    2. 数组
    3. 字符串strings

    如下是几个常见的例子:

    1. 用BOOST_FOREACH遍历STL容器

    std::list<int> list_int( /*...*/ );
    BOOST_FOREACH( int i, list_int )
    {
        // do something with i
    }

    2. 使用引用类型获取更高效的遍历

    std::vector<std::vector<int> > matrix_int;
    BOOST_FOREACH( std::vector<int> & row, matrix_int )
    BOOST_FOREACH( int & i, row )
    ++i;

    3. 使用break, continue,return实现遍历循环的控制

    std::deque<int> deque_int( /*...*/ );
    int i = 0;
    BOOST_FOREACH( i, deque_int )
    {
        if( i == 0 ) return;
        if( i == 1 ) continue;
        if( i == 2 ) break;
    }

    此外,还一个小诀窍就是通过define将BOOST_FOREACH定义为更优雅的方式:

        #define foreach BOOST_FOREACH

    BOOST_FOREACH并不复杂,有兴趣的朋友可以看看,相信对提高大家的编程能力还是很有帮助的。

  • 相关阅读:
    matplotlib 去掉坐标轴
    求最大公约数最小公倍数及整除求余数等
    数据分析小题
    map,reduce,filter基础实现
    今日成果:爬取百度贴吧
    Jquery瀑布流布局,jQuery Wookmark Load 示例
    html5 input type="color"边框伪类效果
    Jquery点击除了指定div元素其他地方,隐藏该div
    Jquery判断checkbox是否被选中
    Jquery给网页的title取值和赋值
  • 原文地址:https://www.cnblogs.com/TianFang/p/1229218.html
Copyright © 2020-2023  润新知