C++编程 - tuple、any容器



flyfish 2014-10-29

一 tuple

tuple是固定大小的容器,每一个元素类型能够不同

作用1 替换struct

struct t1
{
int nID;
double dVal;
};

替换为

typedef std::tuple<int,double> t1;

作用2 随意个数的函数返回值

写法1

std::tuple<int,double> TupleFunction1()
{
std::tuple<int,double> tupRet(0,0); tupRet=std::tuple<int,double>(1,2.1); return tupRet;
}

写法2

std::tuple<int,double> TupleFunction2()
{
return std::make_tuple(1,2.1);
}

调用

auto ret=TupleFunction1();
std::cout<<std::get<0>(ret)<<" "<<std::get<1>(ret)<< std::endl;

二 any

any容器採用boost库中的any

boost::any  仅仅存储一个随意类型的元素

boost::any a=1;
boost::any b=2.1;

借助any建造一种能够存储随意类型且大小动态变化的容器

	 std::vector<boost::any> v;
v.push_back(1);
v.push_back(2.1);

输出函数

void OutputAny(boost::any a)
{
if (!a.empty())
{
if(a.type() == typeid(int))
{
std::cout<< boost::any_cast<int>(a)<<std::endl;
}
if(a.type() == typeid(double))
{
std::cout<< boost::any_cast<double>(a)<<std::endl;
} }
}

函数调用

for each(auto e in v)
{
OutputAny(e);
}

以上程序在Visual C++2010下编译通过

最新文章

  1. Android面试一天一题(1Day)
  2. content相关属性
  3. Android应用底部导航栏(选项卡)实例
  4. web前端性能测试小点
  5. ios Swift 国外资源
  6. 启动android程序报错
  7. ArcEngine10在VS2010中编译问题
  8. POJ - 3249 Test for Job (DAG+topsort)
  9. 【HDOJ 1085】数学问题,母函数
  10. hdfs文件系统架构详解
  11. [转载] Hive结构
  12. EBS 可拓展的外部信用风险导入
  13. input标签实现小数点后两位保留小数
  14. mac终端代理
  15. Redis操作集合,有序集合
  16. selenium+java定位163/126邮箱元素显示定位失败解决
  17. kafka学习指南(总结版)
  18. 视频处理工具FFmpeg的安装(windows/Linux)
  19. 曲演杂坛--使用TRY CATCH应该注意的一个小细节
  20. Cryptography Reloaded UVALive - 4353(BigInteger)

热门文章

  1. java从Object类型转换成double类型
  2. Android Studio 2.2 Record Espresso Test
  3. iOS学习笔记(八)——iOS网络通信http之NSURLConnection
  4. Linux minilogd占用内存过高及开机启动项修改
  5. cocos2d-x笔记-CCGLProgram
  6. Python asyncio文档阅读摘要
  7. 如何让 Qt 的程序使用 Sleep
  8. 【java web】Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
  9. 基于HTML5 Canvas粒子效果文字动画特效
  10. C语言 &#183; 字符串对比