首页 > 解决方案 > 如何获得数组的大小,以便我可以从函数中声明所述数组

问题描述

    const int size = arraySize();
    int list[size];

我收到以下错误:

表达式必须有一个常量值

我知道这可能不是最好的方法,但它是为了分配。

标签: c++

解决方案


您应该知道在 C++ 中没有动态分配的数组。

此外,const变量在编译时不一定是已知的!

您可以执行以下操作之一:

  1. 将函数声明arraySize为,假设您可以在编译时constexpr计算它的值,或者创建一个表示数组大小的常量(同样,使用 )。constexpr
  2. 使用动态分配的对象,例如std::vector(可以扩展的“数组”)或指针。但是,请注意,当您使用指针时,您必须通过 using 分配其内存new,并通过 using 取消分配delete,这很容易出错。因此,我建议使用std::vector.

使用第一个,我们得到:

constexpr std::size_t get_array_size()
{
    return 5;
}

int main()
{
    constexpr std::size_t size = get_array_size();
    int list[size];
}

编译完美。

另一件很高兴知道的事情是,std::array它为普通的常量大小数组添加了更多功能。


推荐阅读