c++ - 获取 std::array 的第二个参数(大小)作为函数参数

标签 c++ c++11 constant-expression stdarray

在下面的代码中,我需要获取 std::array 的大小作为函数参数。我更喜欢 std::array 而不是 std::vector 因为容器的大小不应该改变。但是,编译器会报错 error: ‘n’ is not a constant expression。如何通过函数参数获取数组的大小?

ma​​in.cpp:

#include <iostream>
#include <array>

using namespace std;

void fnc(const int n)
{
    array<int,n> a;
}

int main()
{    
    fnc(5);    

    return 0;
}

最佳答案

你不能。数组的大小必须是常量表达式——这意味着它必须在编译期间已知。如果它是函数参数,则不可能,因为可以使用任何参数调用该函数。使用 std::vector - 您很可能看不到任何性能差异。

关于c++ - 获取 std::array 的第二个参数(大小)作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768574/

相关文章:

c++ - 如何将按钮添加到我的节点的属性编辑器面板,该面板调用该节点内的方法?

c++ - 与成员函数异步

c++ - 从 priority_queue 弹出时出现排序问题,这是 std::priority_queue 的错误吗

c++ - 枚举类型值作为 C++ 中数组的长度

c++ - gcc v10 和 v9 : bug or feature 之间的 constexpr 差异

c++ - 与复合物体的圆碰撞

c++ - 读取 USB 摄像头的输入编辑并将输出发送到 Windows 上的虚拟摄像头

c++ - C++中关于常量初始化和零初始化的顺序的矛盾定义

c++ - 高性能 C++ 宏 - 用于生成重载的循环扩展

c++ - 将元素移出关联容器