[英]Fill a custom integer array with ints
我正在創建一個名為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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.