問題圖片
如題,為什麼我不能直接像這樣宣告一個陣列,已經爬過許多文章,有人說沒有支援動態分配數組,但我不知如何打開。
int前面要有const或constexpr修飾詞,向編譯器表明這是能在編譯時確定的值
因為C++的陣列必須要在編譯時確認大小
c++要動態的allocate(new)/deallocate(delete)需要大小的記憶體空間
再以指標變數來承接操作
大概像是
int iSize.
iSize = sizeof(int) * n * m.
int* pMatrix = new int[iSize].
.
.
.
delete pMatrix.
在 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>
表示一個整數型的動態數組。