我正在使用二维的 C/C++ 程序处理我的数据。这里我的值是成对计算的,这里 foo[i][j]
和 foo[j][i]
的值相同。
因此,如果我使用简单的二维数组来实现它,我的一半空间将被浪费。那么什么是表示这个下/上三角矩阵的最佳数据结构。
问候,
最佳答案
如果您有 N 个项目,则没有主对角线的下三角阵列将有 (N - 1) * N/2 个元素,或 (N + 1) * N/2 个元素和主对角线。没有主对角线,(I, J) (I,J ∈ 0..N-1, I > J) ⇒ (I * (I - 1)/2 + J)。对于主对角线,(I,J ∈ 0..N-1, I ≥ J) ⇒ ((I + 1) * I/2 + J)。
(是的,当您在 2.5 GB 的机器上分配 4 GB 时,将其减少一半确实会产生巨大的影响。)
关于c++ - 表示下/上三角矩阵的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7945722/