`
lunan
  • 浏览: 77998 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

boost::BOOST_FOREACH

阅读更多

#include "stdafx.h"
#include <string>
#include <iostream>
#include "boost/assign.hpp"
#include "boost/bind.hpp"
#include "boost/typeof/typeof.hpp"
#include "boost/assert.hpp"
#include <boost/foreach.hpp>

#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
#define foreach BOOST_FOREACH
#define auto_t  BOOST_AUTO
#define assert_t BOOST_ASSERT

using namespace boost::assign;
using namespace std;

#define BOOST_DISABLE_ASSERTS

struct device
{  
device( long LL,string SS,double DD)
:m_id     (LL)
,m_name   (SS)
,m_double (DD)
{}
    long   m_id;
string m_name;
double m_double;
};

BOOST_TYPEOF_REGISTER_TYPE(device) //注册一个自定义类 (貌似不注册也行)

int main(int argc, _TCHAR* argv[])

//超简洁的循环,且同 const_iterator 同样效果
std::vector<std::vector<int> > g4(3);
foreach( const std::vector<int>& row, g4)

//row.push_back(12);

foreach( const int & i,row)
{
   //todo
}
}
   
//对于map 要换成 pair,但不知道为什么不能放到foreach括号中
std::map<int,std::string> M = map_list_of(1,"11") (2,"22") (3,"33");
typedef const  pair<int,std::string> ff;
foreach( ff& f,M)
{
cout << f.second ;
}
   
    //对于自定义类型
std::vector<device> G;
device g1(11,"table",2.4);
G.push_back(g1);

foreach(const device & g6,G)
{
cout <<  g6.m_name ;
}
   
//没有找到实现 const 的办法,待解决
for ( auto_t( &gg,G.begin()); gg != G.end(); ++gg)
{  
cout << gg->m_name ;
}


map<string, vector<device> > vg;
vg.insert(make_pair("name",G));

for ( auto_t( &gg, vg.begin()); gg != vg.end(); ++gg)
{  
      cout << gg->first ;
}
   
set<int> s = list_of(10)(20)(30);
BOOST_TYPEOF(*s.begin()) y; //也可以用BOOST_AUTO(y, *s.begin());
foreach(y, s)
{

}

return 0;
}
分享到:
评论

相关推荐

    boost1.57.zip

    4. 容器与算法:`boost::container`库提供了多种容器,如`boost::array`(固定大小数组)、`boost::unordered_map`(无序映射),以及各种算法如`boost::foreach`,使得迭代更加便捷。 5. 动态链接:`boost::dll`库...

    深入实践Boost:Boost程序库开发的94个秘笈

    Boost.Foreach,方便遍历容器。 8. **数学和统计**:Boost.Math 提供了广泛的数学函数和统计工具。 9. **程序设计模式**:讲解如何利用 Boost 库实现常见的设计模式,如 Boost.Any,存储任意类型对象;Boost....

    C++ Boost 库中文文档

    2. **容器和算法**:Boost提供了一些增强版的容器(如`multi_array`、`bimap`)和算法(如`foreach`循环、`accumulate`等),提高了代码的效率和简洁性。 3. **多线程支持**:`boost::thread`库提供了线程管理和同步...

    XML文件读取

    在C++编程中,处理XML文件通常需要借助第三方库,如Boost库。Boost库是一个非常著名的C++库集合,它提供了大量的高效、高质量的工具和算法,其中包括处理XML的库。 在C++中,读取XML文件通常包括以下步骤: 1. **...

    boost_1_45

    - **算法库**(Algorithms):如foreach、assign、bind等,增强了C++的编程便利性。 - **泛型编程**(Generic Programming):如mpl(Meta-Programming Library)、function、lambda等,使得元编程和函数对象更加...

    boost_中文说明文档.rar

    - `foreach`:一个宏,提供简洁的迭代器遍历语法,类似于Python的for-each。 - `algorithm`:包含各种通用算法,如排序、查找和转换。 4. **线程与并发**: - `thread`:线程管理库,支持线程创建、同步和通信。...

    boost 1.77.0 Windows平台开发包,静态库版本

    Boost库是C++编程语言的一个开源库集合,它提供了许多现代C++的工具和库,以帮助开发者解决各种复杂问题,提升效率。Boost 1.77.0是该库的一个稳定版本,专为Windows平台设计,包含了静态库版本,这对于那些希望在...

    boost 1.41 中文文档,使用帮助,教程手册

    汉化 boost 文档,致力 boost 推广。 如果你对本项目有兴趣,欢迎加入,相关说明请查阅项目论坛: https://groups.google.com/ 到目前为止,各人贡献的译文如下: 贡献者 贡献的译文 alai04 accumulators, any, ...

    boost中文文档

    2. **容器与算法**:Boost提供了如`multi_index_container`这样的高级容器,以及`foreach`循环宏,它们扩展了C++标准库的功能,使代码更加简洁和高效。 3. **函数对象和元编程**:Boost库包含了一系列函数对象...

    boost-1_34_1

    2. **容器和算法**:Boost提供了一些扩展的容器(如`multi_array`多维数组)和算法(如`foreach`循环),增强了STL的标准功能。 3. **泛型编程**:`mpl(Meta-Programming Library)`允许在编译时进行计算,`lambda...

    boost_1_42_0_vs2010 静态预编译库

    4. **算法和容器**(Algorithms and Containers):Boost提供了各种算法,如`foreach`循环,以及一些高级容器,如`multi_array`和`property_map`。 5. **正则表达式**(RegEx):Boost.Regex库提供了一个高效的、...

    Boost程序库探秘 深度解析C++准标准库第2版(251-500)

    Boost程序库探秘 深度解析C++准标准库第2版(251-500)

    boost_regex_only_1_34_0.rar

    foreach.hpp提供了一个简洁的foreach循环迭代器,适用于遍历容器,尽管它不是Boost.Regex库的核心部分,但可以方便地与正则表达式匹配结果一起使用,例如,遍历匹配到的所有子串。 multi_index_container.hpp是...

    boost中文手册C++

    4. 算法:Boost库包含了大量算法,例如foreach循环、algorithm库中的各种排序和查找算法,以及graph库中的图算法,为处理复杂数据结构提供了强大支持。 5. 数学工具:Boost.Math库提供了许多数学函数和常量,包括高...

    boost_1_41_文档_中文版

    5. **容器和迭代器**:如`multi_array`提供了多维数组,`foreach`迭代器简化了对容器的遍历。 6. **泛型编程**(mpl):Metaprogramming Library提供了强大的元编程工具,可以在编译时进行计算。 7. **日期时间库*...

    GE.tar.gz_Boost

    5. **算法**(Algorithms):扩展了标准库中的算法,例如`foreach`循环和`accumulate`函数。 6. **数学和统计**(Math and Statistics):提供了一些数学函数和统计计算工具。 7. **序列化**(Serialization):...

    Boost程序库

    容器和迭代器扩展,如`multi_array`和`foreach`;以及算法库,如`accumulators`和`function`。 3. **模板元编程**:介绍Boost.MPL(Meta-Programming Library),这是一种强大的模板元编程框架,允许在编译时进行...

    STL_Boost.doc

    - `Foreach`:遍历容器的算法。 - `GIL`:图像库中的算法。 - `Graph`:图结构的算法。 - `Min-Max`:同时获取最大值和最小值的算法。 - `Range`:关于范围的概念和工具。 - `String Algo`:非正则表达式字符...

    boost库帮助文档

    2. **算法库**:提供了扩展的STL算法,如`foreach`循环,以及各种排序和搜索算法,提高了代码的效率和可读性。 3. **容器库**:例如`multi_array`提供了多维数组,`property_tree`则用于XML、JSON等配置文件的解析...

    Boost程序库完全开发指南:深入C++_标准库 第3版带书签

    7. **Boost.Foreach** - 提供了一个简洁的循环语法,类似于Python的`for`循环。 #### 四、Boost库的安装与配置 Boost库通常可以通过源码下载后自行编译安装,也可以通过包管理器在某些操作系统上直接安装。安装步骤...

Global site tag (gtag.js) - Google Analytics