c ++数组声明与java数组声明相比

时间:2015-12-24 11:50:15

标签: c++ arrays

我知道java中的数组可以声明为

int[3] values;

int value[3];

这两种形式在c ++中也有效吗?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

没有。只有第二个在C或C ++中有效。

答案 1 :(得分:1)

在C ++中,最好使用std::array(或类似类型)作为固定大小的数组,如下所示:

array<int, 3> values;

对于动态大小,通常使用std::vector(或类似类型),如下所示:

vector<int> values( 3 );

声明int[3] values在C ++中无效,但您可以编写

template< class Some_type >
using Type_ = Some_type;

// ...
Type_< int[3] > values;

C ++数组构成了C ++类型系统中的一个大洞,因为在期望指针的上下文中,C ++数组表达式衰减为指向第一个项目的指针。 Java数组在Java类型系统中构成了一个较小的漏洞。由于数组项的类型不正确,仍有可能在Java中出现异常(运行时错误)。这似乎表明数组很难用任何语言来解决。但是,C ++原始数组是最糟糕的数组语言设计之一,因此最好使用上面讨论的替代方案。