C語言如何實現陣列的自增長?

時間 2021-06-17 15:23:47

1樓:王飛

template

void Array::reallocate( unsigned int new_size )

T* old_data = data;

data = new T[new_size];

allocated = new_size;

int end = used < new_size ? used : new_size;

for (int i=0; idata[i] = old_data[i];

if (allocated < used)

used = allocated;

delete old_data;

template

void Array::push_back( const T& element )

if (used + 1 > allocated)

reallocate(used * 2 +1);

data[used++] = element;

is_sorted = false;

2樓:土地測量員

陣列起始長度是0。

輸入第1個數字n1,陣列長度為0,容納不下,於是申請容納1個元素的空間,把n1放進去。

輸入第2個數字n2,陣列長度為1,容納不下,於是申請容納1*2=2個元素的空間,把原先空間儲存的n1和這次輸入的n2都放進去。釋放原先申請的空間。

輸入第3個數字n3,陣列長度為2,容納不下,於是申請容納2*2=4個元素的空間,把原先空間儲存的n1、n2和這次輸入的n3都放進去。釋放原先申請的空間。

輸入第4個數字n4,陣列長度為4,容納得下,於是把這次輸入的n4放進去。

輸入第k個數字nk,判斷陣列的空間能夠容納得下新輸入的nk。如果可以,就把nk存進去;如果不能,就申請兩倍大小的空間,把原先空間的資料(n1~nk-1)複製過去,再存入nk。

C語言如何定義涉及自引用而導致陣列成員長度可變的結構體型別

田野 include include include include define CONT SIZE0x20typedef struct Content Content define SPEC LEN c CONT SIZE sizeof c Content CreateContent retur...

C語言裡如何按需生成函式指標陣列?

暮無井見鈴 C 怎麼生成 4096 個函式?參考這裡的巨集,編譯時生成這些函式是可行的。C 的話用 index sequence 模板就行。 VeroFess 手機回答 我是這麼做的 shellcode 彙編引擎 mmap VirtulAlloc 是不太安全 我乙個寫殼的管他安不安全 gcc下 in...

c語言陣列,利用陣列如何寫裴波納契數列的前n項的值?

Joker gcc fib.c o fib Ofast time fib define P 1000000000 7 define N 100000 include intfib intn,int arr if arr n 1 return arr n int arr N 10 intmain fo...