数组内即能存int,又能存double,还能存string了

本文探讨了C++中几种不同的技术手段用于存储不同类型的对象。首先介绍了一个共有基类来统一对象管理的方法;其次,利用联合体(union)实现多类型数据的单一存储单元;最后,通过C++ TR1标准中的元组(tuple)实现更灵活的数据存储,展示了如何创建和使用包含多种数据类型的元组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://zhidao.baidu.com/question/76298192.html 

 

1、用一个共有基类统一所有打算放在一起的对象

class base_

{ }; class A:public base_

{

};

class B:...

... base * pClassArray[256];

 

2、可以用“联合”来代替

union utagObjCell{

 classA * o_a;

 classB * o_b;

};

utagObjCell unCell[128];

3、最新的C++规范里(TR1),支持“元胞”,其实就是很像Matlab里的CELL,用法:

// 博注:以前梦寐以求的,既可以存int,又可以存double,还可以存string的数组

// 理解有误阿,感觉tuple和struct差不多, 哎

 

#include <tuple>

#include <iostream>

#include <utility>

#include <string>

typedef std::tr1::tuple<int, double, std::string> Mytuple;

int main()

{  Mytuple c0(0, 3.1416, "Hello!");

 // display contents " 0 1 2 3"

 std::cout << " " << std::tr1::get<0>(c0);

 std::cout << " " << std::tr1::get<1>(c0);

 std::cout << " " << std::tr1::get<2>(c0);

std::cout << std::endl;

// display first element " 0"

std::tr1::tuple_element<2, Mytuple>::type val = std::tr1::get<2>(c0);

std::cout << " " << val;

std::cout << std::endl;

return (0);

}

 

参考资料:MSDN for VS2008 SP1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值