使用整数

时间:2016-01-22 01:25:28

标签: c++ arrays pointers

我正在创建一个名为intArray的类。它应该与std :: array的行为相同,但只能使用整数。考虑到大小,我在构造函数中有点卡住,我需要用零填充数组。我使用std :: array NOT ,我只是想重新创建它。

我正在考虑在内存中连续的n个整数(其中n是固定数组大小)和指向第一个整数的指针head,然后其余的整数可能是通过在磁头所指向的数据的存储位置之后获取第i个存储位置来轻松访问。

基本上,如何在构造函数中用零初始化/填充数组?

这是实现构造函数的有效方法吗?如果是这样,有更好的方法吗?如果没有,我该如何完成这项任务?

抱歉,这是一个令人困惑的问题,如果您需要澄清,请发表评论。

到目前为止,这是我的构造函数:

(不确定如何创建'n'个独立整数)

intArray::intArray(size_t n){

    intArray::size = n;

    int num = 0;
    intArray::head = num //head is an int*

    //have no idea how to do this...
    for(int i=0; i<n; i++){
        &num + 1 = 0; //trying to set next value in memory to 0
                      //obviously not gonna work!
    }//end loop

}//end of constructor

我非常感谢任何答案/评论。如果我错过了什么,现在就让我,谢谢!

1 个答案:

答案 0 :(得分:2)

首先,您真正要做的是重新创建vector,而不是array,因为在编译时不需要知道构造参数。考虑到这一点,您需要使用动态内存,除非您更改将大小作为模板参数传递并存储实际数组而不是指针的方法(这正是std::array的工作原理)。

因此,使用动态内存,构造函数变为:

intArray::intArray( size_t n )
    : head( new int[ n ] )
    , currentSize( n )
{
    std::fill( head, head + n, 0 );
}

如果您不想使用std::fill,则等效循环为:

for( size_t i = 0; i < n; i++ )
{
    head[i] = 0;
}