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

boost之Boost.Foreach遍历相关推荐

  1. foreach遍历进阶_“枚举器“/GetEnumerator()方法

    通过foreach遍历数据,实际上是调用了一个"枚举器"来遍历数据,和foreach没有任何关系,foreach只是语法上的简化而已,或者说foreach语句降低了枚举的复杂度. ...

  2. php7的foreach遍历数组,PHP中使用foreach遍历三维数组

    昨天写代码的时候遇到一个三维数组,突然不知道怎么遍历这个三维数组,后面经过研究才发现,三维数组可以使用双foreach遍历,现在就分享给大家. PHP代码: //首先声明一个三维数组或者自己从数据库里 ...

  3. php类可以遍历,在PHP中检测一个类是否可以被foreach遍历

    在PHP中检测一个类是否可以被foreach遍历 在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历.那么类呢?我们要如何知道这个类是 ...

  4. boost::math::boost::math::interpolators::cardinal_cubic_b_spline用法的测试程序

    boost::math::boost::math::interpolators::cardinal_cubic_b_spline用法的测试程序 实现功能 C++实现代码 实现功能 boost::mat ...

  5. Boost:Boost概念的function_requires()的测试程序

    Boost:Boost概念的function_requires()的测试程序 实现功能 C++实现代码 实现功能 Boost:Boost概念的function_requires()的测试程序 C++实 ...

  6. Boost:boost::callable_traits::function_type_t的测试程序

    Boost:boost::callable_traits::function_type_t的测试程序 实现功能 C++实现代码 实现功能 boost::callable_traits模块,boost: ...

  7. Boost:boost :: bind相等运算符的测试程序

    Boost:boost :: bind相等运算符的测试程序 实现功能 C++实现代码 实现功能 boost :: bind相等运算符的测试程序 C++实现代码 #include <boost/c ...

  8. Boost:boost :: mem_fn等式运算符的测试程序

    Boost:boost :: mem_fn等式运算符的测试程序 实现功能 C++实现代码 实现功能 boost::bind模块,boost :: mem_fn等式运算符的测试程序 C++实现代码 #i ...

  9. Boost:boost::source_location的用法测试程序

    Boost:boost::source_location的用法测试程序 实现功能 C++实现代码 实现功能 boost::source_location的用法测试程序 C++实现代码 #include ...

  10. Boost:boost::bimaps::list_of的测试程序

    Boost:boost::bimaps::list_of的测试程序 实现功能 C++实现代码 实现功能 boost::bimaps::list_of的测试程序 C++实现代码 #include < ...

最新文章

  1. 协防差_西班牙男篮的投篮比美国还差 为什么在2019年世界杯夺冠
  2. LeaFlet学习之GridLayer扩展
  3. 到底能不能做一辈子的程序员——大龄程序员将何去何从
  4. 批处理命令 / rd 和 del
  5. iOS开发小技巧--高斯模糊框架的应用
  6. 手机版python3.6.6的requests库下载_Python爬虫之Python3.6 Requests库的基本使用方法
  7. java打包拆包_[Java] Java 打包成jar包 和 解压jar包
  8. 大数据与Hadoop
  9. MaxComputeSql性能调优
  10. python小孩的报酬_孩子做了家务,家长该不该支付“酬劳”呢?
  11. Linux get cpu number,Linux上获取CPU Core个数的实现
  12. python反距离权重法_反距离权重法 (Spatial Analyst)—ArcMap | 文档
  13. 【C#】多线程解决UI界面卡死的问题
  14. 接口与抽象类的相同点和不同点
  15. 遗传算法讲解与实现(python)
  16. c语言iic通讯编程,I2C总线万能程序(C语言)
  17. ASP VBSCRIPT VBA RSA 公钥加密 私钥解密 私钥签名 公钥验签
  18. 泛型+IO流+网络编程
  19. 【模电】习题知识点总结(持续更新ing)
  20. 勒索软件致重要文件化为乌有?不重视备份将后悔莫及!

热门文章

  1. ruid/euid/suid
  2. Android下实现数据绑定功能
  3. silverlight RadGridView总结二(转载)
  4. exec的不同实现--鸠占鹊巢还是功成身退
  5. 网吧无盘服务器从30台----115台的经验(二)
  6. spring aop 注入源码解析
  7. js数组去重(多种方法)
  8. 关于Struts2三种访问Servlet API方式的总结
  9. MySQL存储过程_创建-调用
  10. cached过高导致内存溢出 java head space