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识别为序列类型的对象,通常包括如下几种:


STL容器
数组
字符串strings
如下是几个常见的例子:


1. 用BOOST_FOREACH遍历STL容器




2. 使用引用类型获取更高效的遍历
std::list<int> list_int( /*...*/ );
BOOST_FOREACH( int i, list_int )
{
    // do something with i
}



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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值