C++ 多維數(shù)組
嚴(yán)格來說C++沒有多維數(shù)組,通常說的多維數(shù)組其實(shí)就是數(shù)組的數(shù)組,這一點(diǎn)需要謹(jǐn)記。
當(dāng)一個數(shù)組的元素仍然是數(shù)組時,通常使用兩個維度來定義他,一個維度表示數(shù)組本身的大小,另一個維度表示其元素(也是數(shù)組)大小。

多維數(shù)組的初始化,我們通常將二維數(shù)組第一維稱為行。



多維數(shù)組的下標(biāo)引用
如果表達(dá)式含有的下標(biāo)數(shù)量和數(shù)組的維度一樣多,表達(dá)式的結(jié)果就和數(shù)組的類型一致。如果表達(dá)式所含的下標(biāo)比數(shù)組小,表達(dá)式的結(jié)果就是給定索引處的一個內(nèi)層數(shù)組。

范圍for遍歷

這就是通過范圍for語句把管理數(shù)組索引的任務(wù)交給了系統(tǒng),因?yàn)橐淖冊氐闹担詒ow和col都是引用類型,第一個for循環(huán)遍歷ia的所有元素,ia的元素是大小為4的數(shù)組,因此row的類型是含有四個整數(shù)數(shù)組的引用。第二個for循環(huán)依次遍歷那些4元素數(shù)組,因此col類型是整數(shù)的引用。
因?yàn)槲覀円淖償?shù)組的值,所以我們使用的都是引用,但是還有一個深層次的原因促使我們這么做。

這個循環(huán)中沒有任何寫的操作,可是我們還是將外層循環(huán)的控制變量聲明成了引用類型,這是為了避免數(shù)組被自動轉(zhuǎn)化為指針。
如果我們不使用引用

我們將無法通過編譯,因?yàn)橹暗谝谎h(huán)遍歷ia的所有元素,這些元素實(shí)際上是大小為4的數(shù)組,因?yàn)閞ow不是引用類型,所以編譯器初始化row時會自動將這些數(shù)組形式的元素轉(zhuǎn)化成指向該數(shù)組內(nèi)首元素的指針。這樣得到的row的類型是int*,顯然內(nèi)層循環(huán)就不合法了。編譯器試圖遍歷在一個int*內(nèi)遍歷,這顯然不是程序的目的。

注意:使用范圍for循環(huán)處理多維數(shù)組,除了最內(nèi)層循環(huán),其他所有循環(huán)的變量都應(yīng)該是引用類型。
指針和多維數(shù)組

上述聲明中括號必不可少!

可以通過auto來避免使用指針符號

也可以用begin和end函數(shù)
