有没有办法获得数组的大小而无需手动找到它?

时间:2016-04-15 00:09:04

标签: c++ arrays

所以我一直以这种方式制作数组,但我发现了一个错误,让我们说这是一个循环复制和逐个元素的数组:

int v1[] = { 3, 4, 7, 8};
int v2[sizeof(v1)];
for (auto i = 0; i < sizeof(v2); ++i)
{
  v2[i] = v1[i]
}

v2数组的大小不会是4个整数,而是将它们全部加起来。所以v2的大小为22而不是4个整数。所以我想知道是否有任何方法可以找到数组的大小,而无需去阵列,看看手动有多少元素。有办法吗?感谢。

2 个答案:

答案 0 :(得分:3)

只需使用std::arraystd::vector

std::array<int, 4> v1 { 3, 4, 7, 8};
auto v2 = v1;

Live demo

答案 1 :(得分:2)

虽然我同意其他人一般应该使用STL容器,但在您的情况下,您可以使用sizeof(v1)/sizeof(int)获取数组中元素的数量。 sizeof(v1)将为您提供4个整数数组的总字节数,除以sizeof(int)将为您提供元素数。