检查数组的索引是否为空

时间:2015-05-19 04:36:54

标签: c++ arrays

我目前正在尝试编写一个脚本,以便我可以将一个项目添加到数组中有一个项目的最后一个索引中。例如,如果我初始化了一个数组customers和{{1}所有都有东西,那么整数将被添加到orders这就是我所拥有的:

var findCustomerOrders = function() {
    for (var i = 0, l = customers.length; i < l; i++) {
        if (customers[i].id == customerId) {
            return customers[i].orders;
        }
    }
    return [];
};

vm.orders = findCustomerOrders();

我无法帮助,但觉得有更好的方法可以做到这一点,可能是一个不同的int a[5]条件。我想知道是否有另一种检查下一个索引是否为空的方法。

3 个答案:

答案 0 :(得分:5)

您可以使用数组索引计数器。说,int counter = 0;

将整数存储到数组counter时使用a作为索引,例如a[counter] = 5向数组添加整数后,递增计数器,counter++

通过这种方式,您可以确保添加到数组中的下一个值始终按照您在问题中描述的方式添加

答案 1 :(得分:2)

有些事情可能会清除看起来像是对数组的误解:

声明数组时说

int main()
{
    int a[5];

    for (int i = 0; i < 5; i++)
    {
        printf("a[%d] = %d", i, a[i]);
    }
}

数组中的所有元素都已存在。也就是说,您可以访问[0] ... a [4]而不会出现错误。数组的所有值都已隐式设置,您可以通过查看printf的输出来看到这一点。请注意,这些是您自己未设置的值,并且会有所不同。如果您对它们变化的原因感到好奇,可以看到:Variable initialization in C++

要显式设置这些值,您可以将数组中的所有值初始化为0,如下所示:

int main()
{
    int a[5] = {0};

    for (int i = 0; i < 5; i++)
    {
        printf("a[%d] = %d", i, a[i]);
    }
}

或通过使用静态初始化程序

int main()
{
    int a[5] = {1, 2, 3, 4, 5};

    for (int i = 0; i < 5; i++)
    {
        printf("a[%d] = %d", i, a[i]);
    }
}

但是因为在创建时数组的所有值都已存在,所以在C ++中并没有像“未初始化的数组”这样的状态。 a [3]的值可以隐式或显式设置,具体取决于您创建数组的方式。

std :: vector是一个动态增长的数组,基于您需要多少空间。为了产生这种效果,std :: vector通过使用size变量跟踪有多少数组被“使用”。如果你想重新实现它以了解它是如何完成的,你可能想要一个类:

class MyArray
{
public:
    MyArray() : m_size(0)
    {
    }

    void AddVal(int data)
    {
        if (m_size < 5)
        {
            m_array[m_size++] = data;
        }
    }

    int GetSize()
    {
        return m_size;
    }

private:
    int m_array[5];
    int m_size;
}

答案 2 :(得分:1)

如果将数组初始化为0,则可以检查该值是否为0.

宣传:

int array[5] = {0};

检查0:

array[4] == 0;