调整多维向量的大小

qut*_*ron 8 c++ stl

如何调整多维向量的大小,例如:

  vector <vector <vector <custom_type> > > array; 
Run Code Online (Sandbox Code Playgroud)

例如,我需要数组[3] [5] [10]?

Mat*_*att 11

array.resize(3,vector<vector<custom_type> >(5,vector<custom_type>(10)));
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,这适用于 OP 的空向量情况,但如果你的向量已经有元素,这不会调整现有元素的大小,因此只有当现有元素已经具有所需尺寸时,你才会获得确切的所需尺寸(例如,这不会正确调整现有 2x2x2 向量的大小或缩小 10x10x10 的大小,但适用于 1x5x10)。这对于设置现有多维向量很有用,但不一定要实际“调整”现有多维向量的大小。如果您需要精确的大小,如果您有 C++11 或更高版本,则“std::array”可能是更好的选择。 (2认同)

qut*_*ron 5

我做的))

array.resize(3);
for (int i = 0; i < 3; i++)
{
    array[i].resize(5);
    for (int j = 0; j < 5; j++)
    {
       array[i][j].resize(10);
    }
}
Run Code Online (Sandbox Code Playgroud)


dav*_*vka 5

另见Boost.MultiArray

Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface.


Ton*_*roy 4

您应该vector一一调整所有嵌套的大小。使用嵌套for循环或递归。

  • 好的,比如m_elements.resize(3); for (int i = 0; i &lt; 3; i++) { array[i].resize(5); for (int j = 0; j &lt; 5; j++) { 数组[i][j].resize(10); } } (2认同)