我正在研究STL并做了win32项目..
但是我陷入了运行时错误..
我尝试调试它但是..
(部分代码)
vector<Vertex> currPoly=polygons.back();
vector<Vertex>::iterator it;
for(it=currPoly.begin();it!=currPoly.end();++it){
vector<Vertex>::iterator p1;
vector<Vertex>::iterator n1;
vector<Vertex>::iterator n2;
if( it==currPoly.begin()){
p1=currPoly.end();
n1=it+1;
n2=it+2;
}else if( it==currPoly.end()-1){
p1=it-1;
n1=it+1;
n2=currPoly.begin();
}else if( it==currPoly.end()){
p1=it-1;
n1=currPoly.begin();
n2=currPoly.begin()+1;
}else{
p1=it-1;
n1=it+1;
n2=it+2;
}
int tmp;
tmp=it->x;
tmp=p1->x;
请click查看调试图片
这很奇怪,因为
在观察表中,
n1,p1,已定义但 n2 未定义 tmp 也不是..
我找不到问题所在...
请帮忙..
最佳答案
你应该更清楚你的问题是什么......
如果你想知道为什么 n1
和 tmp
的值不能显示在调试器中,我猜那是因为你正在调试一个发布版本(或某种带有优化的版本),并且编译器可能已经在执行流程中“优化掉”了那些变量(它决定不再使用它们或者它们的值可以在其他地方获得)。
尝试调试未优化的构建。
顺便说一下,错误 CXX0017(调试器为这些变量显示的错误)表示“表达式计算器错误”。
关于C++ STL vector 迭代器...但出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568230/