【发布时间】:2014-09-20 02:25:42
【问题描述】:
上下文:
我正在尝试学习 C++(同时阅读一些 stackoverflow 社区推荐的书籍),我决定尝试制作一个具有基本功能的元胞自动机程序,只是为了学习(并且因为它对我来说很有趣)。
问题:
有没有比使用向量
我在使用向量的向量时没有遇到问题,语法上也没有问题,我只是想知道替代方案。而且因为我没有经验,所以每次我写一些代码时,我都会想可能有很多更直接的方法可以做到,而我自己是找不到的。
这是我的第一个问题,所以如果我做了一些违反问题指南的事情,我将非常感谢您指出这一点。
有用的相关问题供将来参考:Is a vector<vector<double>> a good way to make a make a matrix class?
【问题讨论】:
-
如果性能是一个真正的问题,那么您可能会从原始多维数组中获得更好的性能:
Cell (*cells)[100] = new Cell[100][100];。原因是编译器可以使用简单的计算而不是双重取消引用来访问单元格。 -
既然你问:不要在你的问题中包含“提前致谢”或任何形式的“谢谢”。这不是论坛。至于你的问题:考虑一个提供
operator()(size_t, size_t)的 Matrix类——它可以随心所欲地管理它的内存,特别是避免嵌套 vector的双重间接。还有std::valarray,不过比较专业。 -
“有用的相关问题”是将
vector of vectors与array of arrays进行比较。由于我已经概述的原因,这两种方法的效率都可能低于真正的多维数组。多维数组只需要一个取消引用,然后进行简单的计算。数组(或向量)的数组需要两次取消引用。 -
@Galik:多维数组就是数组的数组。您的意思是将其与指向数组的指针数组进行比较吗?
标签: c++ matrix vector standards