【发布时间】:2018-07-10 14:46:56
【问题描述】:
我想用一个二维数组初始化一个单位矩阵(主对角线上的一个,其他地方的零)。
我尝试用vector 来实现它。代码是这样的:
vector<vector<int> > matrix;
matrix.resize(n);
for(auto &i: matrix)
i.resize(n);
// initialize...
这比仅使用 int matrix[n][n] 的普通数组复杂得多。我不这样做是因为我想返回这个二维矩阵。所以函数是这样的:
matrix_type
func(int n)
{
//intialize the matrix
...
}
因为C++11中的数组是这样的:
array<Elem,N> arr;
我不知道如何在运行时获取 N。然后我决定使用向量。
那么有没有更好的方法来处理这个问题?(不使用传统数组)
感谢您的回答。这个问题可以通过使用来解决
vector<vector<int>> matrix(n, std::vector<int>(n));
还有,另一个问题。如果我是个笨蛋,只想使用接口,也就是我希望返回类型为
array<int,n>。那么有没有什么方法可以在运行时获取N并返回呢?
【问题讨论】:
-
您不能使用二维数组方法的原因是什么?所有这些方法都可以满足您的需求,您更愿意实施哪一种?
-
普通的
int matrix[n][n]不适用于nunknown 在编译时。 -
哦,这只是为了好奇。由于 STL 已经定义了一个新的
接口。所以我想知道是否有一个好的方法可以通过只使用 STL 来解决这个问题。 -
@V.Kravchenko 是的,那不是真的。感谢您指出。然后事情就变得复杂了~~
-
请注意,向量的向量是矩阵的低效表示。连续存储的行的平面向量更好。
标签: c++ multidimensional-array vector