C++编程 - tuple、any容器

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下编译通过

时间: 2024-10-10 10:52:14

C++编程 - tuple、any容器的相关文章

Java并发编程:同步容器

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch).今天我们就来讨论下同步容器. 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷 若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3933404.html 一.为什么会出

Java并发编程:并发容器ConcurrentHashMap

Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能.因为同步容器将所有对容器状态的访问都 串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低.因此Java5.0开 始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入

多线程编程-之并发编程:同步容器

为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer. 同时说说List,Set,Map之间的区别. 自动扩展的数组: List 重复的数组:set 自动排序的组数 :TreeSet,TreeList,Tree** 而几乎所有的集合都是基于数组来实现的. 因为集合是对数组做的封装,所以,数组永远比任何一个集合要快 但任何一个集合,比数组提供的功能要多 一:数组声明了它容纳的元素的类型,而集合不声明.这是由于集合以o

《深入实践C++模板编程》之五——容器与迭代器

1.容器的定义 容器:专门用于某种形式组织及存储数据的类称为“容器”. 2.容器与迭代器 迭代器:封装了对容器虚拟数据序列的操作并按约定提供统一界面以遍历容器内容的代理类即为迭代器. 举例理解: template<typename T> class list; template<typename T> struct list_node { typedef T value_type; typedef T& reference_type; typedef const T con

多线程之同步容器

Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器.并发容器.阻塞队列.Synchronizer(比如CountDownLatch).今天我们就来讨论下同步容器. 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷 若有不正之处请多多谅解,并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/393340

Spring.Net学习笔记(一)-容器的使用

一.下载地址: http://www.springframework.net/download.html 二.相关程序集 Spring.Net容器定义在程序集Spring.Core.dll中,它依赖于Common.Logging.dll.该程序集位于 Spring.NET-1.3.1\Spring.NET\bin\net\4.0\release目录下 三.创建容器 1.编程方式的容器 使用Spring.Context.Support.StaticApplicationContxt直接创建容器 p

【SSH进阶之路】一步步重构容器实现Spring框架——从一个简单的容器开始(八)

目录 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器开始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入式"管理的两种方案--主动查找和控制反转(九)(未更新) [SSH进阶之路]一步步重构容器实现Spring框架--配置文件+反射实现IoC容器(十)(未更新) [SSH进阶之路]一步步重构容器实现Spring框架--彻底封装,实现简单灵活的Spring框架(十一)(未更新) 最近一直在和容器打交道,甚至前面的博文,我们也

编程实践笔记{Java 线程 并发处理 Webservice}(转)

http://www.cnblogs.com/mingzi/archive/2009/03/09/1406694.html 1, 保证线程安全的三种方法: a, 不要跨线程访问共享变量 b, 使共享变量是final类型的 c, 将共享变量的操作加上同步 2, 一开始就将类设计成线程安全的, 比在后期重新修复它,更容易. 3, 编写多线程程序, 首先保证它是正确的, 其次再考虑性能. 4, 无状态或只读对象永远是线程安全的. 5, 不要将一个共享变量裸露在多线程环境下(无同步或不可变性保护) 6,

java容器的理解(collection)

容器类(Conllection)对于一个开发者来说是最强大的工具之一,可以大幅提高编程能力.容器是一个将多个元素组合到一个单元的对象,是代表一组对象的对象,容器中的对象成为它的元素. 容器适用于处理各种类型的对象的聚集,例如存储.获取.操纵聚合数据,以及聚合数据的通信.容器只保存Object的引用,因为这是所有类的基类,因此,容器可以保存任何类的对象. 容器框架包括以下元素: 接口:它们代表容器类型的抽象数据类型.整个java容器类的基础都是容器接口,而不是类.最大的好处就在于将容器的实现和容器