确定阵列的大小

determining the size of an array

本文关键字:阵列      更新时间:2023-10-16

显示数组中有多少个的适当函数是什么?

int a[10];
a[0] = 1;
a[1] = 3;

所以我想要一些显示size of a = 2的东西。

使用原始数组无法做到这一点。

考虑一个容器类,例如std::vector:

std::vector<int> a;
a.push_back(1);
a.push_back(3);
std::cout << a.size() << "n";  // Displays "2"

听起来你需要一个动态调整大小的数组:

std::vector<int> a;
a.push_back(1);
a.push_back(3);
std::cout << a.size(); // 2

这个数组有10个元素。你只是碰巧分配了其中两个,但这并没有改变区域的大小。如果您希望simething跟踪您设置的元素,请使用std::vector<int>push_back():

std::vector<int> array;
array.push_back(1);
array.push_back(3);
int size = array.size();

Oil Charlesworth似乎是对的。之所以如此,是因为在编译时,无论该数组是否包含数据,都会为其留出(分配)一定量的内存。因此,使用sizeof(a)这样的命令总是会产生相同的结果。它将返回为数组分配的字节数。在这种情况下,数组是40字节,这是有意义的,因为int通常是4字节长*数组(10)的长度=40。

这可能因电脑而异,但至少,这是我在不久前的一篇教程中读到的,每种变量类型的分配大小似乎因电脑而异(或操作系统而异)。

我知道,这并没有多大帮助,但现在你至少知道为什么不能用原始数组来做这件事了。