首页 > 代码库 > boost中自动确定数据类型(BOOST_TYPEOF和BOOST_AUTO)的使用
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();}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。