在3D矢量C ++中保留元素

时间:2018-09-21 18:33:55

标签: c++ multidimensional-array vector

我有一个3d容器:

 std::vector<int, std::vector<std::vector<double>>> myVec;

我想具有尺寸[n + 1] [3 *(n + 10)+1] [16 *(n + 10)+1]。我想在向量中快速保留此空间,并且没有太多其他意大利面条功能,因此我可以模拟动态3D数组。我该怎么办?

1 个答案:

答案 0 :(得分:0)

保留还是确定大小?

http://www.cplusplus.com/reference/vector/vector/reserve/ http://www.cplusplus.com/reference/vector/vector/resize/

使用构造函数调整大小的演示:

#include <iostream>
#include <vector>
using namespace std;

template <class T>
void printSize(T v) {
    cout<<v.size()<<endl;
}
int main(){
    int n = 1;//Initial n value;
    int d1 = n+1, d2 = 3+(n+10)+1, d3 = 16*(n+10)+1;
    vector<vector<vector<int>>> i3D(d1,vector<vector<int>>(d2,vector<int>(d3)));
    //i3D.resize(d1,vector<vector<int>>(d2,vector<int>(d3)));
    printSize(i3D);
    printSize(i3D[0]);
    printSize(i3D[0][0]);
    return 0;
}

在我的示例中,我已经使用构造函数调整了大小。您可以使用resize方法执行相同操作。
另一方面,保留将需要(我知道)使用循环并为每个阵列(全部)保留内存。

认为这是调整大小的问题,因为您已指定了x,y和z尺寸的预设大小。