我有一个3d容器:
std::vector<int, std::vector<std::vector<double>>> myVec;
我想具有尺寸[n + 1] [3 *(n + 10)+1] [16 *(n + 10)+1]。我想在向量中快速保留此空间,并且没有太多其他意大利面条功能,因此我可以模拟动态3D数组。我该怎么办?
答案 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尺寸的预设大小。