除了多维数组之外还有什么东西吗?

发布于 2024-12-20 02:05:35 字数 80 浏览 0 评论 0原文

由于在C++中向量比数组更受欢迎,我想问一下如果你想以多维数组形式(m行,n列)存储数据,你通常建议使用哪种结构。向量向量是一种合理有效的做法吗?

Since vectors are preferred to arrays in C++, I would like to ask what kind of structure you suggest generally in case one wants to store data in a multidimensional array form (m rows, n columns). Vector of vectors is a reasonable and effective practice?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

等往事风中吹 2024-12-27 02:05:35

使用 std::vector< 并没有什么问题。 std::vector>矩阵。

但是,如果多维结构的大小是固定的(即 m × n)并且您不需要 std::vector 提供的额外功能,那么可能是 std::array 是一个不错的选择。

There's nothing at all wrong with having an std::vector< std::vector<int> > matrix.

However, if the size of your multi-dimensional structure is going to be fixed (ie m by n) and you don't need the extra functionality provided by std::vector, then perhaps an std::array is a good alternative.

往事随风而去 2024-12-27 02:05:35

是的,向量的向量是一种合理的做法。为什么你认为不是?
有效取决于你是否提前知道元素的数量。
如果没有,那么无论如何你都不能在 C++ 中使用可变长度数组,所以向量是一个不错的选择。

使用 C++11 std::array 也是一个不错的选择。

Yes, vector of vectors is an reasonable practice. Why do you think its not?
Effective depends on whether you know the number of elelemts in advance.
If not then you cannot have Variable length arrays in C++ anyways so vector is an good option.

With C++11 std::array is also a good option.

仅此而已 2024-12-27 02:05:35

取决于您想要实现什么。可以使用向量的向量,但是当您想要使用公式 row + row_size * column 访问元素时,您也可能有一个唯一的数组/向量并计算索引...使用向量可能会使用比您需要的更多的内存,所以如果你的矩阵非常巨大,这可能不是最好的解决方案。

如果您使用数字,您可能还需要看看 boost::uBLAS,它是一个矩阵库,具有许多可能的存储策略(按行、按列、压缩、三角形...) - 每个建议的矩阵模型都适合一个特定的问题以获得最佳性能或限制分配的内存。

我认为您应该研究所有可能的存储方法,并选择最适合您的问题的一种。

Depends of what you want to achieve. vector of vectors can be used, but you may also have one unique array/vector and compute the index when you want to access elements with the formula row + row_size * column... Using vectors may use more memory than you need, so if your matrix is very huge, this may not be the best solution.

If you work with numerics, you may also have a look to boost::uBLAS which is a matrix library with many possible storage policies (matrix by row, by column, compressed, triangular...) - each of the proposed matrix model fits a particular problem to have best performances or limit allocated memory.

I think you should study all the possible methods of storage and chose the one which will best fit your problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文