gpt4 book ai didi

c++ - 用整数填充自定义整数数组

转载 作者:行者123 更新时间:2023-11-28 02:13:16 27 4
gpt4 key购买 nike

我正在创建一个名为 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;
}

关于c++ - 用整数填充自定义整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com