在C ++中执行此任务是否有效或类似的方法?
void function(int n) {
int array[n] = {};
}
我试图在C ++中实现合并排序算法,它比its implementation in Java更棘手。它本质上依赖于以这种方式声明数组的能力。
答案 0 :(得分:3)
语法
int array[n] = {};
不支持作为标准c ++的一部分。虽然支持堆栈上的数组分配,但仍有编译器扩展。
在c ++中执行此操作的正确方法是
void function(int n) {
std::vector<int> array(n);
}
有关详细信息,请参阅std::vector<>
参考文档。
答案 1 :(得分:2)
在C ++中,std::vector
用于这样的情况:
#include <vector>
// ...
void function(int n) {
std::vector<int> array(n);
}
它为您分配一个大小为n
的数组,并自动管理其内存。
答案 2 :(得分:-1)
如果您不需要矢量,则可以进行简单分配:
void function(int n) {
std::unique_ptr<int[]> array (new int[n]);
// for (int i=0; i<n; ++i) array[i] = i;
}
std :: unique_ptr将删除析构函数中的数组(当然)。