gpt4 book ai didi

c++ - 3d 数组索引上的迭代器

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:52 25 4
gpt4 key购买 nike

我正在编写处理 3d 网格化数据的代码(boost::multi_array 和 vtkImageData)。我发现我有嵌套循环

for(int i=0; i<shape[0]; i++){
for(int j=0; j<shape[1]; j++){
for(int k=0; k<shape[2]; k++){
/* ... */
}
}
}

在我的代码中出现的次数超出了我的审美要求;使用将三个索引保存在固定大小数组(如 boost::array)的迭代器来编写此代码的正确方法是什么?

目标是编写类似于:

for(boost::array<int,3> ijk: GridIndicesIterator(shape)){ ... }

boost::multi_array 允许遍历元素,但 3d 索引必须明确地反向计算。我还查看了 boost::iterator ,似乎正确编写迭代器代码是一项艰巨的任务。

最佳答案

一种选择是使用迭代器模式。你可以查看这个link .您可以考虑为每个维度设置迭代器并遍历它们。您也可以考虑将 operator () 作为参数传递给迭代器类并执行所需的操作。

关于c++ - 3d 数组索引上的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22400478/

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