【发布时间】:2021-04-23 14:36:27
【问题描述】:
我们可以通过以下方式轻松地将数组转换为向量:
int a[n];
vector<int> b = vector(a, a + n);
我想使用矩阵,如果我想转换:
int a[n][n];
到
vector<vector<int>> b = ... // from a
b.size() = n 和 b[0...n-1].size() = n ?
或者,我可以接受解决方案转换
std::vector< std::array<int, n> > a;
a.reserve(n);
vector<vector<int>> b = ... // from a
【问题讨论】:
-
如果您的矩阵具有恒定长度,即始终为矩形,您可能不需要向量的灵活性。至少没有一个维度。
-
关于
a.reserve(n),您应该阅读Choice between vector::resize() and vector::reserve()。reserve(n)不会做任何有意义的事情,除非你也插入元素。 -
@Yunnosch 我同意这是一个有效的观点,但我确实需要它,因为我无法控制类型(需要返回一个向量
>)。我使用 int [n][n] 为leetcode.com/problems/spiral-matrix-ii 创造了一个解决方案。因此我的问题。注意,相关:stackoverflow.com/questions/18991765/vector-of-vectors-reserve -
为什么不从一开始就使用向量(或
std::array)?为什么需要“转换”为向量? -
@TaiguaraTupinambás 我想保持简单,只有 std