【发布时间】:2015-09-14 13:18:20
【问题描述】:
我正在尝试制作一个使用二维矩阵的程序。 问题是为了避免有限制,我不知道如何声明矩阵,因为维度不是恒定的。我看到了如何实现具有非恒定维度的向量,创建对象。但是对于矩阵什么都没有...我该如何解决?
【问题讨论】:
-
你可以使用
std::vector
标签: c++
我正在尝试制作一个使用二维矩阵的程序。 问题是为了避免有限制,我不知道如何声明矩阵,因为维度不是恒定的。我看到了如何实现具有非恒定维度的向量,创建对象。但是对于矩阵什么都没有...我该如何解决?
【问题讨论】:
std::vector
标签: c++
如果您知道如何处理可变维度向量,您已经可以解决您的问题:
例如您可以存储 m x n 矩阵 A = (a_1, .., a_n) 的列向量向量,或行向量 A^t = (a_1, .., a_m) 的向量。
或者您可以将此类矩阵的 m x n 个元素顺序存储到单个向量中。 您只需要对元素进行一些枚举即可将元素 a_ij 的索引 i 和 j 转换为单个索引 k。
例如逐行枚举:
如果 i 来自 {1,..,m},j 来自 {1,.., n} 和 k 来自 {1,..,mn}。
反之,从 k 计算 i 和 j 是:
i = g_1(k) = ((k-1) div m) + 1
j = g_2(k) = k - m (i-1) = k - m (g_1(k)-1)
如果您不关心原则上是如何完成的,而只需要一些工作代码,您应该搜索一些 C++ 矩阵库。
【讨论】: