給陣列擴容的幾種方式

2021-09-07 22:35:36 字數 1740 閱讀 8424

假設有乙個規定長度的陣列,如何擴容呢?最容易想到的是通過如下方式擴容:

class program
;
arrs[5] = 6;
}
}
報錯:未處理indexoutofranageexception,索引超出了陣列界限。

□ 建立乙個擴容的臨時陣列,然後賦值給原陣列,使用迴圈遍歷方式

static

void main(string args)

;
int temp = new

int[arrs.length + 1];

//遍歷arrs陣列,把該陣列的元素全部賦值給temp陣列
for (int i = 0; i < arrs.length; i++)
//把臨時陣列賦值給原陣列,這時原陣列已經擴容
arrs = temp;
//給擴容後原陣列的最後乙個位置賦值
arrs[arrs.length - 1] = 6;
foreach (var item in arrs)
console.readkey();
}
□ 建立乙個擴容的臨時陣列,然後賦值給原陣列,使用array的靜態方法

像這種平常的陣列間的拷貝,array類肯定為我們準備了靜態方法:array.copy()。

static

void main(string args)

;
int temp = new

int[arrs.length + 1];

array.copy(arrs, temp, arrs.length);
//把臨時陣列賦值給原陣列,這時原陣列已經擴容
arrs = temp;
//給擴容後原陣列的最後乙個位置賦值
arrs[arrs.length - 1] = 6;
foreach (var item in arrs)
console.readkey();
}
□ 使用array的靜態方法擴容

但是,拷貝來拷貝去顯得比較繁瑣,我們也可以使用array.resize()方法給陣列擴容。

static

void main(string args)

;
array.resize(ref arrs, arrs.length + 1);
//給擴容後原陣列的最後乙個位置賦值
arrs[arrs.length - 1] = 6;
foreach (var item in arrs)
console.readkey();
}
總結:陣列擴容優先考慮使用array的靜態方法resize,其次考慮把乙個擴容的、臨時的陣列賦值給原陣列。

給陣列擴容的幾種方式

假設有乙個規定長度的陣列,如何擴容呢?最容易想到的是通過如下方式擴容 class program arrs 5 6 報錯 未處理indexoutofranageexception,索引超出了陣列界限。建立乙個擴容的臨時陣列,然後賦值給原陣列,使用迴圈遍歷方式 static void main str...

給二維陣列指標擴容

參考 參考 參考 postgres全部由純c編寫,現在要給乙個指標陣列賦值,但是因為由陣列上限要求,所以就和vector那樣,需要動態的給二維陣列擴容。如果寫了擴容方法,如果對函式中的指標重新分配記憶體,就會導致函式中的指標和實參變化。如下 include include const int max...

陣列的擴容

陣列是固定大小的,不能改變長度,要想達到陣列擴容的目的,就只能把當前陣列複製到乙個更長長度的陣列中 使用arrays.copyof 方法 原始碼如下 public static short copyof short original,int newlength 可以看出,內部呼叫了system.ar...