數(shù)組的長度是什么意思 怎么比較數(shù)組的長度?
怎么比較數(shù)組的長度?在許多情況下,您可以大致判斷您需要多少容量。當(dāng)您不知道長度時,您需要的數(shù)據(jù)結(jié)構(gòu)稱為動態(tài)可變長度數(shù)組。它被稱為動態(tài)數(shù)組。這就是C中的STD::vector動態(tài)數(shù)組通常定義為在存儲ch
怎么比較數(shù)組的長度?
在許多情況下,您可以大致判斷您需要多少容量。
當(dāng)您不知道長度時,您需要的數(shù)據(jù)結(jié)構(gòu)稱為動態(tài)可變長度數(shù)組。它被稱為動態(tài)數(shù)組。這就是C中的STD::vector
動態(tài)數(shù)組通常定義為
在存儲char類型的地方,同樣的原理也適用于其他類型。
其中,capacity是容量,size是實際數(shù)據(jù)量。BUF是指特定的內(nèi)存。當(dāng)容量為4,大小為3時,將放置另一個字符,這就足夠了。之后,容量和大小都變?yōu)?。
此時,您需要放置另一個字符,但無法將其放下。你需要重新分配一個更大的內(nèi)存范圍。并將以前的數(shù)據(jù)復(fù)制到新空間,然后釋放舊的內(nèi)存空間。通常的策略是將容量從4增加到8。
分配新空間、復(fù)制數(shù)據(jù)和釋放舊空間的過程可以通過realloc完成。如果可以擴展當(dāng)前位置的容量,realloc將直接擴展內(nèi)存空間,避免復(fù)制數(shù)據(jù)的成本。
封裝動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu)。您不需要關(guān)心外部的特定內(nèi)存分配過程,您可以始終將數(shù)據(jù)放在內(nèi)部。
擴展容量的策略通常是加倍。但在許多情況下,可以估計最終容量的粗略值(不太準(zhǔn)確)。動態(tài)數(shù)組通常用名為initialcapacityvalue的參數(shù)初始化。通過這種方式,傳入一個估計值,這可以大大減少它重新分配空間的次數(shù)。
動態(tài)數(shù)組是最簡單和最常用的數(shù)據(jù)結(jié)構(gòu)。它可以保證內(nèi)存的連續(xù)性,如果你把數(shù)據(jù)放在不連續(xù)的地方,并且經(jīng)常從中間插入和刪除,你需要一個鏈表。