boost之Boost.Foreach遍历

来源:互联网 发布:linux vi 删除多行 编辑:程序博客网 时间:2024/05/18 03:46

类似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. 使用breakcontinue,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并不复杂,有兴趣的朋友可以看看,相信对提高大家的编程能力还是很有帮助的。

1 0
原创粉丝点击