在函数内创建大小为n的数组,其中n是函数的整数参数

时间:2015-02-28 10:48:45

标签: c++ arrays function

在C ++中执行此任务是否有效或类似的方法?

void function(int n) {
    int array[n] = {};
}

我试图在C ++中实现合并排序算法,它比its implementation in Java更棘手。它本质上依赖于以这种方式声明数组的能力。

3 个答案:

答案 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将删除析构函数中的数组(当然)。