我有一个包含 STL 容器的嵌套遍历代码。特别是我有一个包含子列表的顶级容器(列表),而这些子列表包含更多的子列表。例如,在 DICOM 结构中,患者可以有多个研究,每个研究可以有多个系列。我必须对 Series 对象执行一些操作,到达它们的唯一方法是深入循环,如下所示。
伪代码如下所示。
STLContainer top;
STLContainer::iterator top_iter;
for ( top_iter= top.begin(); top_iter != top.end(); ++top_iter) {
STLContainer mid = *top_iter;
STLContainer::iterator mid_iter;
for ( mid_iter = mid.begin(); mid_iter!= mid.end(); ++mid_iter) {
STLContainer bottom = *mid_iter;
STLContainer::iterator bottom_iter;
for(bottom_iter = bottom.begin(); bottom_iter != bottom.end(); ++bottom_iter){
ExecuteSomething(*bottom_iter); // Finally do something with the stored object
}
}
}
现在,如果我必须对这些“底部”对象重复执行一系列操作,我必须一次又一次地进行这种遍历。如果我想使用 STL 算法,我需要为每个嵌套级别编写至少 3 行“for_each”。
有谁知道缩短此代码的技术,它可以像这样工作?
// Drills down to the deepest nested container
for_each(top.begin(), top.end(), DrillDownAndExecuteOnBottom());
哪一个可以在一行中工作?像这样的东西?谢谢!