Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何传递大小未知的std::数组?在C++中 我想传递一个C++ STD::数组定义为 array<int,100> arrayName_C++_Arrays - Fatal编程技术网

如何传递大小未知的std::数组?在C++中 我想传递一个C++ STD::数组定义为 array<int,100> arrayName

如何传递大小未知的std::数组?在C++中 我想传递一个C++ STD::数组定义为 array<int,100> arrayName,c++,arrays,C++,Arrays,到另一个函数,但我不想在那里指定大小,因此我只能在创建数组时轻松更改大小 我该怎么写?我不会写字 function(array<> arrayName) 就像我使用字符数组一样 你好,iova。如果您知道编译时的数组大小,正如您使用std::array所暗示的那样,那么您就有了模板。要限制性地支持不同大小的int的std::数组,可以执行以下操作: #include <array> template <size_t N> void ArrayFunc(st

到另一个函数,但我不想在那里指定大小,因此我只能在创建数组时轻松更改大小

我该怎么写?我不会写字

function(array<> arrayName)
就像我使用字符数组一样


你好,iova。

如果您知道编译时的数组大小,正如您使用std::array所暗示的那样,那么您就有了模板。要限制性地支持不同大小的int的std::数组,可以执行以下操作:

#include <array>

template <size_t N>
void ArrayFunc(std::array<int, N> arr)
{
    // Do something with `arr`
}

int main()
{
    std::array<int, 10> arr10;
    std::array<int, 20> arr20;

    ArrayFunc(arr10);
    ArrayFunc(arr20);

    return 0;
}


取决于您是否要修改函数中的arr。

使用vector将是一个不错的选择,因为它本质上是动态的,但要小心,因为它会消耗更多的空间,它在初始值后会加倍,就像vector u声明10后10,它将在20后20后30,每增长10倍。你仍然不想使用它,你可以通过使用两个数组和一些指针来创建你自己的动态数组

您希望能够在运行时或编译时设置大小吗?在编译时可以设置大小的可能副本。在运行时,我认为使用数组是不可能的,或者?
template <size_t N>
void ArrayFunc(std::array<int, N>& arr)
template <size_t N>
void ArrayFunc(const std::array<int, N>& arr)