C ++获取数组的大小

时间:2011-09-02 14:58:58

标签: c++ arrays

我是编程的新手,我想知道如何获得数组的大小,即得到数组中有多少元素的大小。例如,如果我声明一个大小为10的数组,但只输入3个元素到数组中,我该如何确定这个数组的大小?如果我不知道我最初放了多少元素。

6 个答案:

答案 0 :(得分:7)

如果您声明一个数组,例如int array[10],其大小始终为10 * sizeof(int)。没有办法知道你访问它的次数;你需要手动跟踪它。

您应该考虑使用容器类,例如std::vector

std::vector<int> vec;

vec.push_back(5);
vec.push_back(10);
vec.push_back(42);

std::cout << vec.size() << "\n";   // Prints "3"

答案 1 :(得分:1)

如果声明一个包含10个元素的旧式数组,例如std::string words[10],数组的大小总是10个字符串。即使使用新样式(std::array),它也会是固定大小。

您可能正在寻找std::vector<>。这没有固定的大小,但确实有.size()方法。因此,如果您向其添加三个元素,它将具有.size()==3

答案 2 :(得分:1)

获取数组大小(元素数量),假设您事先不知道它 使用sizeof(a)/ sizeof(a [0])

参见下面的示例程序。我用C但它应该很好地延续到C ++

#include <stdio.h>

int main(){
    int a[10];
    printf("%d elements\n",sizeof(a)/sizeof(a[0]));
    return 0;
}

//output: 10 elements

答案 3 :(得分:0)

有几种可能的方法,但它们取决于您的定义。

如果您知道有一个用户不会输入的值(也称为标记值),您可以使用像memset这样的函数将整个数组设置为该未使用的值。然后,您将遍历列表,计算列表中与该值不匹配的所有变量。

另一种方法是构建自己的数组类,只要数组被修改就会计数(你必须根据需要重载=和[]函数)。

您还可以构建动态链接列表,以便在用户添加变量时,可以通过遍历列表或保持计数来确定计数。

但是,如果你把数组作为基本数组,不知道它是实际的起始状态,也不知道用户期望什么(假设这是你的程序,这不应该发生),那么一般来说,不,有知道这种方法。

答案 4 :(得分:-1)

您将计数器变量计数初始化为0。

每当您添加数组时,计数增加1。 每当从数组中删除时,计数减1。

任何时候count都会给你数组的大小。

答案 5 :(得分:-1)

建议:

int[10] arr;

//init all to null

for (int i =0; i < 10; i++)
     arr[i] = 0;

arr[0]=1;
arr[2]=5;

int sz = 0;

for (int j = 0; j < 10; j++)
    if (arr[j] != 0) sz++;