首页 > 解决方案 > 如何创建一个长度由 const 参数指定的数组?

问题描述

我有一个功能:

void f(const size_t &len){
    double arr[len];
}

但它不起作用,因为我收到了来自 len 的消息,即“表达式必须具有恒定值”。如果我不想创建全局变量 len,我该如何解决这个问题?

标签: c++arraysconstants

解决方案


C++ 不支持变长数组。如果len是编译时间常数,我建议您使用std::array模板,如下所示:

template<size_t len>
void f(){
    std::array<double, len> arr;
    //use arr
}

你会这样使用它:

int main()
{
    f<5>();
}

请注意,5在我的示例中是一个编译时常量。如果您在编译时不知道数组的大小,请使用std::vector. 你会这样做:

void f(const size_t len){
    std::vector<double> arr(len);
    //use arr
}

int main()
{
    size_t variableLength = 0;
    std::cin >> variableLength;
    f(variableLenght);
}

推荐阅读