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)的使用,布布扣,bubuko.com

时间: 2024-11-04 19:35:02

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

Python中常见的数据类型总结(四)

三 集合(set) dict是建立了一系列的映射关系,而set是建立一系列无序的,不重复的元素. 1创建 创建set的方式是调用set()并传入一个list,list的元素将作为set的元素. >>> S = set([1,2,3])>>> S {1, 2, 3} 重复元素在Set中自动过滤,如: >>> S = set([1,1,2,3,4,5,4])>>> S {1, 2, 3, 4, 5} 2添加 add()添加,有重复元素可以

MySql中的字符数据类型

MySql中的varchar类型 1.varchar类型的变化 MySQL数据库的varchar类型在4.1以下的版本中的最大长度限制为255,其数据范围可以是0~255或1~255根据不同版本数据库来定.在MySQL5.0以上的版本中,varchar数据类型的长度支持到了65535,也就是说可 以存放65532个字节的数据, 起始位和结束位占去了3个字节,也就是说,在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放,这样就能有效的减少数据库文

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,

JAVA中分为基本数据类型及引用数据类型

一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数

Python中常见的数据类型总结

Python提供多种数据类型来存放数据项集合,主要包括序列(列表list和元组tuple),映射(如字典dict),集合(set),下面对这几种一一介绍: 一 序列 1.列表list 列表是一种有序的集合,相对于元组和字符串的不同是它其中的元素可变,可以随时添加和删除其中的元素. (1) 创建list 在命令行中测试,如下: >>> L1 = [1,2,3] >>> L1 [1, 2, 3] >>> L2 = ['abc'] >>>

重温一下基本数据类型以及自动提升数据类型的问题

上面的图表示出了数据类型的分类, 加上布尔型(bealoon)分为四类八种数据类型, 构成了java的基本数据类型, 这几种数据的之间的联系也是想图中的箭头一样, 数据之间有一个自动提升数据类型的机制, 在java编程中需要随时注意. 下面看一组简单的代码实例: byte a = 127; short b = 45; char e = 'a'; float f = 21.23f; double g = 0.456; String str = "xuesheng"; String x =

JAVA中分为基本数据类型和引用数据类型区别

一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768~32717,默认值0 int:整型,用于存储整数,在内在中占32位,即4个字节,取值范围-2147483648~2147483647,默认值0 long:长整型,在内存中占64位,即8个字节-2^63~2^63-1,默认值0L float:浮点型,在内存中占32位,即4个字节,用于存储带小数点的数

Boost中的Timer的使用——计算时间流逝

使用Boost中的Timer库计算程序的执行时间 程序开发者都会面临一个共同的问题,即写出高质量的代码完成特定的功能.评价代码质量的一个重要标准就是算法的执行效率,也就是算法的执行时间.为了可靠的提高程序的执行效率,首先要知道执行程序所消耗的时间,然后找出可行的方案对程序进行优化.C++程序员在开发代码的过程中难免会遇见此类问题,本文以Boost中的Timer库为例,详细讲解如何测量程序的执行时间. Boost中Timer库的介绍 Timer是Boost中的一个很小的时间库,提供时间度量和进度显

Boost中的智能指针(转)

这篇文章主要介绍 boost中的智能指针的使用.(转自:http://www.cnblogs.com/sld666666/archive/2010/12/16/1908265.html) 内存管理是一个比较繁琐的问题,C++中有两个实现方案: 垃圾回收机制和智能指针.垃圾回收机制因为性能等原因不被C++的大佬们推崇, 而智能指针被认为是解决C++内存问题的最优方案. 1. 定义 一个智能指针就是一个C++的对象, 这对象的行为像一个指针,但是它却可以在其不需要的时候自动删除.注意这个“其不需要的