首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义多维向量的C++优化性能

定义多维向量的C++优化性能
EN

Stack Overflow用户
提问于 2020-05-01 21:19:51
回答 1查看 104关注 0票数 0

我对这段代码的精化时间有问题

代码语言:javascript
复制
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的最快的方法,它需要太多的时间。另请参阅:

代码语言:javascript
复制
vector <vector <vector <int>>>      empty_c(220000, empty_b);

花很多时间。

有最快的方法吗?我还使用了-O3选项。

感谢‘s

EN

回答 1

Stack Overflow用户

发布于 2020-05-01 21:30:02

假设你的整型数是4个字节,这个向量表示至少13 13。

这对于我能想到的大多数应用程序来说都大得离谱。

您有可能使用稀疏数组逃脱惩罚。如果没有,一旦达到这样的大小,只需分配一个向量并使用从3D到1D的映射,例如:

代码语言:javascript
复制
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;

或者使用专门的库,它将为您处理所有这些问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61543279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档