【发布时间】:2011-12-07 07:07:06
【问题描述】:
由于向量比 C++ 中的数组更受欢迎,我想问一下,如果您想以多维数组形式(m 行,n 列)存储数据,您通常建议使用哪种结构。向量的向量是一种合理有效的做法吗?
【问题讨论】:
-
是的。不知道还能说什么。
标签: c++ data-structures multidimensional-array
由于向量比 C++ 中的数组更受欢迎,我想问一下,如果您想以多维数组形式(m 行,n 列)存储数据,您通常建议使用哪种结构。向量的向量是一种合理有效的做法吗?
【问题讨论】:
标签: c++ data-structures multidimensional-array
std::vector< std::vector<int> > matrix 没有任何问题。
但是,如果您的多维结构的大小是固定的(即 m x n)并且您不需要std::vector 提供的额外功能,那么std::array 可能是一个不错的选择.
【讨论】:
typedef matrix<T> vector<vector<T> >
typedef它。
是的,向量的向量是一种合理的做法。为什么你认为不是?
有效取决于您是否提前知道元素的数量。
如果不是,那么无论如何您都不能在 C++ 中使用可变长度数组,因此向量是一个不错的选择。
使用 C++11 std::array 也是一个不错的选择。
【讨论】:
取决于您想要实现的目标。可以使用向量的向量,但是当您想使用公式 row + row_size * column 访问元素时,您也可能有一个唯一的数组/向量并计算索引...使用向量可能会使用比您需要的更多的内存,所以如果您的矩阵非常庞大,这可能不是最佳解决方案。
如果您使用数字,您还可以查看 boost::uBLAS,它是一个矩阵库,具有许多可能的存储策略(按行、按列、压缩、三角形...) - 每个建议矩阵模型适合特定问题以获得最佳性能或限制分配的内存。
我认为您应该研究所有可能的存储方法并选择最适合您的问题的一种。
【讨论】: