【发布时间】:2021-12-10 23:03:11
【问题描述】:
我想初始化指针数组。(不是普通数组)但这不起作用。
int* arr = new int [5];
arr = {1,2,3,4,5};
我也不想这样:(因为如果尺寸改变我必须改变代码)
arr[0] = 1; arr[1] = 2; ...
有没有简单的方法来做到这一点?矩阵呢?
int** mat = ...
mat = { {1,2} , {3,4} }
而且我也不希望这样初始化:(因为当我想将矩阵传递给函数时有一些限制(例如:如果大小改变,我必须改变函数定义)
int mat[2][2] = { {1,2} , {3,4} };
【问题讨论】:
-
如果大小在编译时已知而不是使用原始数组,为什么不
std::vector<int> arr = {1,2,3,4,5}或std::array<std::array<int, 2>, 2>? -
您可以使用模板函数自动推断数组大小。如
template<size_t R, size_t C> void f(std::array<std::array<int, C>, R> const&) { ... } -
@CoryKramer 1-问题限制 2-我想知道有没有办法通过使用原始数组来做到这一点:)。
标签: c++ arrays pointers matrix initialization