我对这段代码的精化时间有问题
vector <int> empty_a(120, 0);
vector <vector <int>> empty_b(130, empty_a);
vector <vector <vector <int>>> empty_c(220000, empty_b);
vector <vector <vector <vector <int>>>> res(3);
res[0] = empty_c;
res[1] = empty_c;
res[2] = empty_c;这是我所知道的定义res等于empty_c的最快的方法,它需要太多的时间。另请参阅:
vector <vector <vector <int>>> empty_c(220000, empty_b);花很多时间。
有最快的方法吗?我还使用了-O3选项。
感谢‘s
发布于 2020-05-01 21:30:02
假设你的整型数是4个字节,这个向量表示至少13 13。
这对于我能想到的大多数应用程序来说都大得离谱。
您有可能使用稀疏数组逃脱惩罚。如果没有,一旦达到这样的大小,只需分配一个向量并使用从3D到1D的映射,例如:
std::vector<int> flat(220000*120*130);
size_t At(size_t x, size_t y, size_t z) { return 120*130*z + 120*y+ x;}
flat[At(x,y,z)] = someValue;或者使用专门的库,它将为您处理所有这些问题。
https://stackoverflow.com/questions/61543279
复制相似问题