用整数填充自定义整数数组

Fill a custom integer array with ints

本文关键字:整数 数组 自定义 填充      更新时间:2023-10-16

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

我在想有 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
<小时 />

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

首先,你真正要做的是重新创建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;
}