zoukankan      html  css  js  c++  java
  • 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<<"	"<<x1.second.b<<endl;
    
    	getchar();
    }
    
    


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    jdk1.8 操作List<Map> 多个map 具有相同的key 进行分组合并重组数据
    js获取字符中连续的值
    Java线程ABA问题
    Oracle递归查询语句
    Oracle学习笔记表连接(十六)
    Docker For Mac没有docker0网桥
    awk 和 sed (Stream Editor)
    WARNING: firstResult/maxResults specified with collection fetch; applying in memory!
    iptables编写规则
    InnoDB Next-Key Lock
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4610044.html
Copyright © 2011-2022 走看看