iT邦幫忙

0

c++不能直接宣告陣列

c++
  • 分享至 

  • xImage

問題圖片
如題,為什麼我不能直接像這樣宣告一個陣列,已經爬過許多文章,有人說沒有支援動態分配數組,但我不知如何打開。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2023-12-17 17:43:18

你大概沒有爬到這幾篇

一維動態陣列
Example#1
Example#2

二維動態陣列(難度較高)
Example

0
skycat2216
iT邦新手 5 級 ‧ 2023-12-18 04:07:54

int前面要有const或constexpr修飾詞,向編譯器表明這是能在編譯時確定的值
因為C++的陣列必須要在編譯時確認大小

0
derek_lan
iT邦新手 2 級 ‧ 2023-12-18 09:21:13

c++要動態的allocate(new)/deallocate(delete)需要大小的記憶體空間
再以指標變數來承接操作
大概像是

int iSize.
iSize = sizeof(int) * n * m.
int* pMatrix = new int[iSize].
.
.
.
delete pMatrix.
0
samlin961112
iT邦新手 5 級 ‧ 2024-04-13 19:27:43

在 C++ 中,動態分配數組是支援的,你可以使用 new 運算符來動態分配一個數組。不過,在使用動態分配數組時,需要小心管理記憶體,避免內存洩漏和未定義行為。

以下是在 C++ 中動態分配數組的一個例子:

#include <iostream>

int main() {
    int size;
    std::cout << "請輸入數組大小:";
    std::cin >> size;

    // 使用 new 運算符動態分配整數數組
    int *arr = new int[size];

    // 初始化數組元素
    for (int i = 0; i < size; ++i) {
        arr[i] = i;  // 將元素初始化為索引值
    }

    // 使用數組
    std::cout << "動態分配的數組元素:" << std::endl;
    for (int i = 0; i < size; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    // 使用完畢後記得釋放動態分配的記憶體
    delete[] arr;

    return 0;
}

上述程式碼示範了如何使用 new 運算符動態分配一個 int 數組,並初始化和使用該數組。需要注意的是,使用完畢後需要使用 delete[] 運算符釋放動態分配的記憶體,以防止內存洩漏。

另外,C++11 之後的標準提供了更安全和方便的動態記憶體管理方式,例如 std::vector 容器,它可以動態調整大小並自動管理記憶體,推薦在實際開發中使用 std::vector 來替代動態分配的數組,以下是一個簡單的示例,展示如何使用 std::vector

#include <iostream>
#include <vector>

int main() {
    // 創建一個空的 vector
    std::vector<int> vec;

    // 向 vector 中添加元素
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);

    // 使用迭代器遍歷 vector 中的元素
    std::cout << "vector 中的元素:" << std::endl;
    for (auto it = vec.begin(); it != vec.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    // 使用 range-based for loop 遍歷 vector 中的元素(C++11)
    std::cout << "使用 range-based for loop 遍歷 vector 中的元素:" << std::endl;
    for (int x : vec) {
        std::cout << x << " ";
    }
    std::cout << std::endl;

    return 0;
}

上述程式碼示範了如何使用 std::vector 創建動態數組,向其中添加元素,以及使用迭代器或 range-based for loop 遍歷 vector 中的元素。

需要注意的是,std::vector 是通過模板類型進行實例化的,你可以在 <> 中指定元素的類型,例如 std::vector<int> 表示一個整數型的動態數組。

我要發表回答

立即登入回答