码迷,mamicode.com
首页 > 其他好文 > 详细

boost中自动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)的使用

时间:2014-07-04 06:53:55      阅读:323      评论:0      收藏:0      [点我收藏+]

标签:boost_auto   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();
}


bubuko.com,布布扣

boost中自动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)的使用,布布扣,bubuko.com

boost中自动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)的使用

标签:boost_auto   boost_typeof   boost   auto   自动数据类型   

原文地址:http://blog.csdn.net/onlysingleboy/article/details/36681413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!