boost在自己主动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)使用
#include<boost/typeof/typeof.hpp>
#include<vector>
#include<iostream>
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() //为了注冊新的数据类型
using namespace std;
namespace ex{ //定义新的数据类型
struct demo_class
{
int a,b;
};
BOOST_TYPEOF_REGISTER_TYPE(ex::demo_class) //向typeof库注冊类
}
vector<string> func()
{
vector<string> v(10,"气死你气死你");//返回vector<string>的函数
return v;
} int main()
{
BOOST_TYPEOF(2.0*3) x=2.0*3;//推导类型位double,并将结果赋值给x
cout<<x<<endl;
BOOST_AUTO(y,2+3);//推导类型为int,并将结果赋值给y
cout<<y<<endl; BOOST_AUTO(a,new double[20]);//推导a的类型为double *a,并使a指向分配的内存空间首地址
a[1]=20.0;
cout<<sizeof(a)<<endl;//空间大小为20
cout<<a[1]<<endl;
BOOST_AUTO(p,make_pair(1,"string"));//推导p的类型为pair,并将(1。“string”)赋值给p
cout<<p.second<<endl;//输出string
BOOST_AUTO(v,func());//推导v的类型为vector<string>,并将数据完整赋值给v
v.push_back("just for test");
vector<string>::iterator it=v.begin();
while(it!=v.end())
{
cout<<(*it).c_str()<<endl;
it++;
} //注冊新的类型 BOOST_AUTO(x1,make_pair("test",ex::demo_class()));//推导x1的数据类型为pair,并将该pair赋值给x1
cout<<typeid(x1).name()<<endl;//输出x1的数据类型
x1.second.a=10;
x1.second.b=20;
cout<<x1.second.a<<"\t"<<x1.second.b<<endl; getchar();
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
boost在自己主动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)使用的更多相关文章
- BOOST_TYPEOF和BOOST_AUTO
1.简介 头文件<boost/typeof.hpp>里定义了两个宏:BOOST_TYPEOF和BOOST_AUTO,分别用于仿真C++新标准的typeof和auto关键字,可以在编译期自动 ...
- boost实用工具:typeof库 BOOST_TYPE BOOST_AUTO
boost::typeof库中使用宏BOOST_TYPE和BOOST_AUTO来模拟C++11关键字typeof和auto C++ Code 123456789101112131415161718 ...
- boost学习目录
Boost之数值转换lexical_cast https://www.cnblogs.com/TianFang/archive/2013/02/05/2892506.html Boost之字符串算法s ...
- Boost多线程
一.概述 线程是在同一程序同一时间内允许执行不同函数的离散处理队列,这使得在一个长时间进行某种特殊运算的函数在执行时不阻碍其他的函数时变得十分重要.线程实际上允许同时执行两种函数,而这两者不必 ...
- boost------bind的使用(Boost程序库完全开发指南)读书笔记
bind是c++98标准库中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用类型,包括函数指针.函数引用.成员函数指针和函数对象. 1.工作原理 bind并不是一个单独的类或 ...
- boost--BOOST_AUTO、typeof、result_of
1.BOOST_AUTO BOOST_AUTO的功能类似于auto和any,可以用来定义任意类型数据,且可以在编译时自动推导出表达式的类型.BOOST_AUTO属于boost中的typeof库,使用需 ...
- sql语法:inner join on, left join on, right join on具体用法
inner join(等值连接) 仅仅返回两个表中联结字段相等的行 left join(左联接) 返回包含左表中的全部记录和右表中联结字段相等的记录 right join(右联接) 返回包含右表中的全 ...
- Delphi 2007体验!
Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...
- Hibernate的一些相关信息
在没有学习Hibernate之前,我们一直都是用jdbc来连接数据库和操纵数据库.所以在刚接触Hibernate时,我们都有一个疑问,为什么要学Hibernate,jdbc不是挺好的吗?那么接下来就来 ...
随机推荐
- LeerCode 123 Best Time to Buy and Sell Stock III之O(n)解法
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- udacity android 学习笔记: lesson 4 part b
udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
- Android Bundle类别
即使在今天发现自己Bundle类不明确,因此,花时间去研究了一下. 依据google官方文件(http://developer.android.com/reference/android/os/Bun ...
- 乐在其中设计模式(C#) - 解释器模式(Interpreter Pattern)
原文:乐在其中设计模式(C#) - 解释器模式(Interpreter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 解释器模式(Interpreter Pattern) 作 ...
- synchronized与static synchronized 差异
1.synchronized与static synchronized 差异 synchronized是对类的当前实例进行加锁,防止其它线程同一时候訪问该类的该实例的全部synchroniz ...
- openSUSE 国内镜像摘要
1. 北交(BJTU): http://mirror.bjtu.edu.cn/opensuse http://mirror.bjtu.edu.cn/packman/suse 2. 华中科大(HUST) ...
- Yaha,Yaho
Yaha: Yaho: 听雪楼上听雪落,雪落无声空余楼. 同样的地方,一坐三年多,人走楼空,回顾空留. 自己非常白痴地画着苹果,非常嗨森地逗自己玩. 这两层精致的书库是大学里面能容纳我的地方(ABC的 ...
- SQL Server AlwaysOn中的几个误区
原文:SQL Server AlwaysOn中的几个误区 AlwaysOn自SQL Server2012之后已经发布很久了,最近我在给一些客户做咨询的时候经常被问起是不是应该使用AlwaysOn,从客 ...
- 父类中可继承方法在处理private的一个demo
public abstract class AbstractParent { public AbstractParent() { System.out.println("Hello,pare ...
- 认识javascript范围和作用域链
范围 作用域就是变量和函数的可訪问范围.控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用域有全局作用域和局部作用域. 全局和局部作用域以下用一张图来解释: 单纯的JavaScri ...