gpt4 book ai didi

c++ - 在声明时定义vector of vector of vector的大小

转载 作者:太空狗 更新时间:2023-10-29 21:18:15 27 4
gpt4 key购买 nike

最近我有机会使用 vector<vector<vector<Some_Struct>>> threeFoldVec ,我们不得不将其插入 list .尺寸threeFoldVec在初始化时已知。

我知道如何在声明时定义 2_fold vector 的大小。

std::vector<std::vector<SomeStruct>> Layer_1(10, std::vector<SomeStruct>(5));

但是当谈到 3_fold vector 时,我很困惑。

std::vector<std::vector<std::vector<SomeStruct>>> 
Layer_1(10, std::vector<std::vector<SomeStruct>>(10));

这样我就可以进入第二维度了。我显然可以遍历 Layer_1并使用 resizereserve根据需要,我有兴趣就地进行,只是因为我认为它很复杂很酷。

最佳答案

你可以这样做:

std::vector<std::vector<std::vector< SomeStruct >>> 
Layer_1(10, std::vector<std::vector< SomeStruct >>(20, std::vector< SomeStruct >(30)));

这将创建一个 10 x 20 x 30 多维数组。请注意,使用嵌套 vector 的效率极低,最好使用 1D 平面 vector 并使用 3D 寻址方案,即对于大小为 HEIGHT x ROWS x COLS 的数组,您可以解决逻辑元素[i][j][k] as

[i][j][k] -> i * ROWS * COLS  + j * COLS + k

这将保证您的对象连续存储,因此您的访问时间会更好。

关于c++ - 在声明时定义vector of vector of vector的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30520673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com