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