1. 程式人生 > >【共讀Primer】20.<3.6> 多維數組 Page112

【共讀Primer】20.<3.6> 多維數組 Page112

for spa rime 遍歷 ostream 語句 聲明 div nbsp

C++中的多位數組,嚴格來說是數組的數組。

int ia[3][4]; //大小為3的數組,每個元素是含有4個整數的數組
    // 大小為10的數組,每個元素都是大小為20的數組,
    // 這些數組的元素是含有30個整數的數組
    int arr[10][20][30] = {0}; // 將所有元素初始化為 0

初始化多維數組

    int ia1[3][4] = {
        {0,1,2,3},
        {4,5,6,7},
        {8,9,10,11}
    };
    // 以下語句等價於上面的初始化
    int ia2[3][4] = {0,1,2,3,4,5,6,7,8
,9,10,11};

多維數組的下標引用

    // 用多重循環來遍歷多維數組
    for(size_t i = 0; i != 3; ++i)
    {
        for(size_t j = 0; j != 4; ++j)
        {
            cout <<"row is " << i << ",col is " << j << ",value is:"<< ia1[i][j] << endl;
        }
    }
    
    // 使用範圍for語句進行遍歷
    for
(auto &row : ia1) { for(auto &col:row) { cout <<"value is:"<< ia1[i][j] << endl; } }

指針和多維數組

對於多維數組中二級元素的聲明需要格外註意,當然我們可以通過auto來代替這種聲明,或者使用typedef來進行一次聲明多次使用。

    int ia[3][4];     // 大小為3的數組,每個元素是含有4個整數的數組
    int (*p)[4] = ia; // p指向含有4個整數的數組(數組的指針)
    
// int *p[4]; // 整型指針的數組(指針的數組) p = &ia[2]; //p指向ia的尾元素

本節內容的全部代碼

#include <iostream>

using std::cout;
using std::endl;


int main()
{
    int ia[3][4]; //大小為3的數組,每個元素是含有4個整數的數組
    // 大小為10的數組,每個元素都是大小為20的數組,
    // 這些數組的元素是含有30個整數的數組
    int arr[10][20][30] = {0}; // 將所有元素初始化為 0
    
    
    int ia1[3][4] = {
        {0,1,2,3},
        {4,5,6,7},
        {8,9,10,11}
    };
    // 以下語句等價於上面的初始化
    int ia2[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
    
    // 用多重循環來遍歷多維數組
    for(size_t i = 0; i != 3; ++i)
    {
        for(size_t j = 0; j != 4; ++j)
        {
            cout <<"row is " << i << ",col is " << j << ",value is:"<< ia1[i][j] << endl;
        }
    }
    
    // 使用範圍for語句進行遍歷 通過auto類型來簡化代碼
    for(auto &row : ia1)
    {
        for(auto &col:row)
        {
            cout <<"value is:"<< col << endl;
        }
    }
    
    int ia3[3][4];     // 大小為3的數組,每個元素是含有4個整數的數組
    int (*p)[4] = ia3; // p指向含有4個整數的數組(數組的指針)
    // int *p[4];    // 整型指針的數組(指針的數組)
    p = &ia3[2];        //p指向ia的尾元素
    
    
}

【共讀Primer】20.<3.6> 多維數組 Page112