[英]how to browse nested for loops
目的是使用xml文件中的vtkLineSource绘制线条。 因此,我从xml文件中将值检索到向量中,然后在嵌套循环中遍历向量以检索值并将它们作为参数传递给绘图功能。
这是我的代码
for ( std::vector<double>::iterator i = tab_recupere_X1.begin();
i != tab_recupere_X1.end();
i++)
{
p0[0]= *i;
std::cout << "p0[0]"<<p0[0]<<std::endl;
for (std::vector<double>::iterator j = tab_recupere_Y1.begin();
j != tab_recupere_Y1.end();
j++)
{
p0[1] = *j;
std::cout << "p0[1]"<<p0[1]<<std::endl;
// break;
for (std::vector<double>::iterator k = tab_recupere_X2.begin();
k != tab_recupere_X2.end();
k++)
{
p1[0] = *k;
std::cout << "p1[0]"<<p1[0]<<std::endl;
for (std::vector<double>::iterator p = tab_recupere_Y2.begin();
p != tab_recupere_Y2.end();
p++)
{
p1[1] = *p;
std::cout << "p1[1]"<<p1[1]<<std::endl;
vtkSmartPointer<vtkLineSource> lineSource =
vtkSmartPointer<vtkLineSource>::New();
lineSource->SetPoint1(p0);
lineSource->SetPoint2(p1);
lineSource->Update();
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputConnection(lineSource->GetOutputPort());
vtkSmartPointer<vtkActor> actor =
vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
actor->GetProperty()->SetLineWidth(4);
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderWindow->Render();
renderWindowInteractor->Start();
}
}
}
}
但是最后一个循环会无限期地运行而不会停止,因此未绘制任何内容。 我使用了(break),但没有任何改善。
我的目的是进行每次迭代,检索x和y的值并画线。
你能帮我吗! 先感谢您。
好的,我认为很难理解代码中的错误。 我看不到任何明显的东西(也许会有其他人看到),但是这里有几点可以帮助您了解正在发生的事情:
您是否尝试过注释掉最后一个循环中的所有函数(使用迭代器p)? 这样做是否有效?
您可能不想在这个大循环中进行任何显示,应该构建或绘制所有内容,然后仅在完成时显示。
重构此代码是一个好主意,您可能知道自己现在正在做什么,但是六个月后会怎么样? 我什至没有提到这样一个事实,即即使该错误修复只是一个字符,其他人看到此代码也可能会放弃对它的理解或自己重写整个内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.