使用C++創建和操作二維數組

一、二維數組的定義及初始化

二維數組可以看做是一個由若干一維數組組成的數組,我們可以通過定義一個二維數組來表示一個行列固定、元素類型相同的矩陣。在C++中,可以使用兩種方式來定義並初始化一個二維數組:

//第一種方式:明確指定行和列,然後進行初始化
int array1[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

//第二種方式:只指定行數,然後在使用時再定義列數
int array2[3][] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

需要注意的是,在第二種方式中,定義的數組只有行數確定,列數不確定,因此在使用該數組時,需要顯式指定列數。如:int array2[][4] = {…}。

二、二維數組元素的訪問

在訪問二維數組時,通常使用兩個for循環:第一個循環遍歷每一行,第二個循環遍歷當前行的每一個元素。

int array[3][4];
//初始化二位數組
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        array[i][j] = i * 4 + j + 1;
    }
}

//輸出數組中的元素
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        cout << array[i][j]<< " ";
    }
    cout << endl;
}

也可以使用指針來訪問二位數組中的元素,需要先定義一個指向二維數組的指針,然後通過指針來訪問數組中的元素。

int array[3][4];
int* p = NULL;

//初始化二維數組
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        array[i][j] = i * 4 + j + 1;
    }
}

//使用指針訪問二維數組中的元素
p = &array[0][0];
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        cout << *(p + i * 4 + j) << " ";
    }
    cout << endl;
}

三、二維數組的轉置

在數學中,矩陣的轉置是指將矩陣的行與列交換的操作。在二維數組中,矩陣轉置的操作可以簡單地通過交換每一個元素的下標來實現。

//定義並初始化一個3*4的二維數組
int array[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

//輸出原始矩陣
cout << "原始矩陣:" << endl;
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        cout << array[i][j] << " ";
    }
    cout << endl;
}

//矩陣轉置
for(int i = 0; i < 3; i++) {
    for(int j = i + 1; j < 4; j++) {
        int temp = array[i][j];
        array[i][j] = array[j][i];
        array[j][i] = temp;
    }
}

//輸出轉置後的矩陣
cout << "轉置後的矩陣:" << endl;
for(int i = 0; i < 4; i++) {
    for(int j = 0; j < 3; j++) {
        cout << array[i][j] << " ";
    }
    cout << endl;
}

四、二維數組之間的賦值和拷貝

在C++中,可以使用等號、memcpy函數或者循環的方式來進行二維數組之間的賦值和拷貝。

//定義並初始化一個3*4的二維數組
int array1[3][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
};

//使用等號賦值
int array2[3][4];
array2 = array1; //錯誤的方式,無法通過編譯

//使用memcpy函數拷貝
int array2[3][4];
memcpy(array2, array1, sizeof(array1)); //需要指定拷貝的大小

//使用循環來賦值或拷貝
int array2[3][4];
for(int i = 0; i < 3; i++) {
    for(int j = 0; j < 4; j++) {
        array2[i][j] = array1[i][j];
    }
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254632.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:12
下一篇 2024-12-15 12:12

相關推薦

  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python去掉數組的中括號

    在Python中,被中括號包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括號。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29
  • Python元祖操作用法介紹

    本文將從多個方面對Python元祖的操作進行詳細闡述。包括:元祖定義及初始化、元祖遍歷、元祖切片、元祖合併及比較、元祖解包等內容。 一、元祖定義及初始化 元祖在Python中屬於序…

    編程 2025-04-29
  • Python列表的讀寫操作

    本文將針對Python列表的讀取與寫入操作進行詳細的闡述,包括列表的基本操作、列表的增刪改查、列表切片、列表排序、列表反轉、列表拼接、列表複製等操作。 一、列表的基本操作 列表是P…

    編程 2025-04-29

發表回復

登錄後才能評論