整数可以存储在字符数组中,字符可以存储在整数数组中。这是否意味着数组可以是异构数据类型?
我知道在容器中,项目必须有一些共同点,但是,当显式转换发生时,容器是否可以有变量?
答案 0 :(得分:2)
标准容器设计为具有相同类型的所有元素。然而,有几种技术可以给人一种程度的异质性印象:
long long
也可以存储long
,int
,short
和signed char
值)。union
类型,其中包含您要存储的每种类型的一个成员boost::any
boost::variant
,这是上述联合的更好替代方案。 您还可以考虑使用多态类型来存储任何派生类型的对象。然而,由于slicing的风险,这看起来可能更棘手。
答案 1 :(得分:1)
在静态类型语言中,数组必须是同类型的。
说“整数类型可以存储在char数组中而反之亦然”,这显然是正确的,因为字符是整数(即使字节数较少),并且在某些限制下char
s和{{1可以互换。
您可以创建一个类int
并将其子类化,以某种方式创建具有多态性的异构值数组。
但重点是什么?在C ++中使用不同类型的值没有任何有用且舒适的方法,并且使用它们的时间并不多。