boost之foreach
来源:互联网 发布:openstack nova源码 编辑:程序博客网 时间:2024/05/24 00:14
- 头文件 #include “boost/foreach.hpp”
- foreach可以用在array, string还有其他stl的容器如vector,list,deque上,形式为 BOOST_FOREACH( 元素, 可迭代对象),还有BOOST_REVERSE_FOREACH(元素类型, 可迭代对象)可以用于反向迭代。
- foreach还可以作用于能够返回可迭代对象的函数上。
- 元素字段可以返回引用和非引用,返回引用的话可以修改原来的可迭代对象;返回非引用的化类似于值传递。
foreach还可以用在二维数组中。
示例代码如下:
#include <iostream>#include <string>#include <vector>#include <list>#include <deque>#include <boost/foreach.hpp>using namespace std;//此函数返回一个可迭代对象,用于foreach中。vector<int> * get_filled_vec( void ) { vector<int> * vecp = new vector<int>(); vecp->push_back(1); vecp->push_back(2); vecp->push_back(3); vecp->push_back(4); vecp->push_back(5); return vecp;}int main(int argc, char ** argv) { //1.Use foreach in array. int arr[] = {1,2,3,4,5,6,7,8,9}; BOOST_FOREACH(int i, arr) { cout << " " << i;} cout << endl; BOOST_REVERSE_FOREACH(int i, arr) { cout << " " << i;} cout << endl; BOOST_FOREACH(int & i, arr) { i += 100; } //return reference. BOOST_FOREACH(int i, arr) { cout << " " << i;} cout << endl; //2.Use foreach in string. string str = "Hello world!"; BOOST_REVERSE_FOREACH(char ch, str) { cout << " " << ch << endl; } cout << endl; //3.Use foreach in stl container. //3.1 vector vector<int> vec(&arr[0], &arr[8]); BOOST_FOREACH(int i, vec) { cout << " " << i; } cout << endl; //3.2 list list<int> lst(arr, arr+8); BOOST_FOREACH(int & i, lst) { cout << " " << i; } cout << endl; //3.3 deque deque<int> deq(arr, arr+8); BOOST_FOREACH(int i, deq) { cout << " " << i; } cout << endl; //4.Use foreach in function. BOOST_FOREACH(int i, *get_filled_vec()) { cout << " " << i; } cout << endl; //5. for 2 dimosion vector {} is not necessary. vector<vector<int> > dim2; vector<int> vec1(arr, arr+8); vector<int> vec2(arr, arr+8); dim2.push_back(vec1); dim2.push_back(vec2); cout << "====" << endl; BOOST_FOREACH(vector<int> & vec, dim2) { BOOST_FOREACH(int item, vec) cout << " " << item; cout << endl; } cout << endl; return 0;}
- 编译方法:
INC = -I/root/software/boostLib/boost_1_64_0all: g++ ${INC} foreachDemo.cppclean: rm -f ./a.out
阅读全文
0 0
- boost之Boost.Foreach遍历
- boost之Boost.Foreach遍历
- boost之foreach
- Boost.Foreach
- 使用 boost.foreach foreach
- 使用 boost.foreach foreach
- 使用 boost.foreach foreach
- boost foreach 探究
- Boost程序库学习-foreach
- mybatics 之<foreach></foreach>
- boost foreach库的例子
- boost 系列四 Array和FOREACH
- Smarty之foreach心得
- jstl之foreach循环
- .net研究之foreach
- jstl之foreach循环
- jstl之forEach用法
- php之foreach语句
- java消息中间件之二:spring集成JMS连接ActiveMQ
- pb创建快捷方式
- 【Java基础】Java内置数据结构——栈
- 构建高性能网站:前端技术
- 蜂巢皮秒轻松搞定“斑主任”进口皮秒0合作皮秒出租
- boost之foreach
- vue.js$nextTick中具体的了解
- Android项目尺寸规范
- ES6字符串扩展
- MySQL(2)数据类型与操作数据表
- Keepalived
- activiti
- iOS 时间格式转化总结(七种)
- 求1+2!+3!+...+20!的和