所以我有一個名爲數字的數組,具有動態分配的內存。初始容量設置爲20的默認容量。我試圖找出如何實現下面的代碼,以便如果將某些內容添加到超出容量的數組中,代碼將創建一個2^n的新數組更大(即40,80,160)。但是我希望它有一個for循環,這將使數組2^n更大,直到新容量大於輸入的數量。如何將動態內存分配數組的大小調整爲特定值?
void BigNum::resize(size_t n)
{
size_t *NEW_CAPACITY;
if(n == capacity)
return; // The allocated memory is already the right size
if(n < used)
n = used;
NEW_CAPACITY = new size_t[n];
copy(digits, digits + used, NEW_CAPACITY);
delete[] digits;
digits = NEW_CAPACITY;
capacity = n;
任何幫助深表感謝
爲什麼你不使用'std :: vector' –
爲什麼你不使用'std :: vector',會自動執行這樣的事情? – nabulke
因爲我必須以這種方式去解決它的一個要求。我寫的基本上是我想要做的,我只需要一個for循環來調整NEW_CAPACITY數組,直到它大於輸入內容。我需要弄清楚如何在每個循環中使數組大小增加2^n – Sean