解决无法动态分配数组arr的问题:
- 在 C++ 中,不能直接使用动态大小的原生数组(例如 int arr[n]),因为数组的大小必须在编译时确定。如果你传入的 n 是运行时决定的,编译器无法确定数组的大小。因此,下面的代码会在标准 C++ 中产生错误:
int n; // 假设 n 是函数的参数
int arr[n]; // 错误!数组大小必须在编译时已知
- 如果 n 是运行时决定的,你需要动态分配内存。例如,使用 new 运算符来动态分配数组:
int n; // 假设 n 是函数的参数
int *arr = new int[n]; // 动态分配大小为 n 的数组
此时,arr 是一个指针,指向动态分配的数组。你还可以在分配时初始化所有元素为 0:
int *arr = new int[n](); // 动态分配并初始化为 0
记得在使用完动态数组后使用 delete[] 释放内存,以避免内存泄漏:
delete[] arr;
vector
以上是针对有些题目将传入的参数固定为arr,实际上如果可以,最好直接用vector
#include <vector>
int n; // 假设 n 是函数的参数
std::vector<int> arr(n, 0); // 创建大小为 n 的 vector,并初始化为 0
标签:arr,int,动态分配,vector,数组,new
From: https://www.cnblogs.com/VickyWu/p/18455784