我已经在类中创建了自己的Matrix类,有关Matrix的信息存储在STL向量中。我注意到在搜索网络时,有些人使用矢量向量来表示Matrix信息。我最好的猜测告诉我,只要矩阵很小或很小(row_num>> column_num),差异就应该很小,但是如果矩阵是方形还是胖的话(row_num<< column_num)呢?如果我要创建一个非常大的矩阵,我会看到运行时间的差异吗?还有其他因素需要考虑吗?
由于
答案 0 :(得分:2)
您是否考虑过使用现成的矩阵表示,例如boost而不是重新发明轮子?
例如,如果您有很多空行,则使用嵌套表示可以节省大量空间。除非您在实际使用案例中有特定信息,表明某种方式无法满足您的要求,否则请按照最容易维护和实施的方式进行编码。
答案 1 :(得分:2)
有太多变量可以回答你的问题。
创建抽象,以便您的代码不关心矩阵的表示方式。然后使用任何实现编写代码。然后对其进行分析。
如果矩阵密集,“向量矢量”不太可能比单个大内存块更快,而且可能更慢。 (追逐随机访问的两个指针+更糟糕的地点。)
如果你的矩阵很大且稀疏,那么你的问题的正确答案可能“既不”。
因此,创建一个抽象接口,编写代码并对其进行分析。 (正如@Mark所说,你应该考虑很多第三方库。)
答案 2 :(得分:0)
如果将所有内容存储在一个向量中,迭代器将遍历整个矩阵。如果使用向量向量,迭代器将只遍历单个维度。