在STL向量中存储矩阵信息。哪个是更好的载体载体或载体?

时间:2011-06-21 15:18:47

标签: c++ matrix

我已经在类中创建了自己的Matrix类,有关Matrix的信息存储在STL向量中。我注意到在搜索网络时,有些人使用矢量向量来表示Matrix信息。我最好的猜测告诉我,只要矩阵很小或很小(row_num>> column_num),差异就应该很小,但是如果矩阵是方形还是胖的话(row_num<< column_num)呢?如果我要创建一个非常大的矩阵,我会看到运行时间的差异吗?还有其他因素需要考虑吗?

由于

3 个答案:

答案 0 :(得分:2)

您是否考虑过使用现成的矩阵表示,例如boost而不是重新发明轮子?

例如,如果您有很多空行,则使用嵌套表示可以节省大量空间。除非您在实际使用案例中有特定信息,表明某种方式无法满足您的要求,否则请按照最容易维护和实施的方式进行编码。

答案 1 :(得分:2)

有太多变量可以回答你的问题。

创建抽象,以便您的代码不关心矩阵的表示方式。然后使用任何实现编写代码。然后对其进行分析。

如果矩阵密集,“向量矢量”不太可能比单个大内存块更快,而且可能更慢。 (追逐随机访问的两个指针+更糟糕的地点。)

如果你的矩阵很大且稀疏,那么你的问题的正确答案可能“既不”。

因此,创建一个抽象接口,编写代码并对其进行分析。 (正如@Mark所说,你应该考虑很多第三方库。)

答案 2 :(得分:0)

如果将所有内容存储在一个向量中,迭代器将遍历整个矩阵。如果使用向量向量,迭代器将只遍历单个维度。