C++ STL vector 迭代器...但出现运行时错误

标签 c++ stl vector iterator

我正在研究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 也不是..

我找不到问题所在...

请帮忙..

最佳答案

你应该更清楚你的问题是什么......

如果你想知道为什么 n1tmp 的值不能显示在调试器中,我猜那是因为你正在调试一个发布版本(或某种带有优化的版本),并且编译器可能已经在执行流程中“优化掉”了那些变量(它决定不再使用它们或者它们的值可以在其他地方获得)。

尝试调试未优化的构建。

顺便说一下,错误 CXX0017(调试器为这些变量显示的错误)表示“表达式计算器错误”。

关于C++ STL vector 迭代器...但出现运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568230/

相关文章:

c++ - 如何找到数组的大小作为 int

c++ - MFC:到底什么是 CSplitterWnd 插入符?

c++ - 将字符串解析为两个 double

c++ - 对 STL 拷贝的推力无法按预期工作

C++ 成员引用基类型 'Vertex *const' 不是结构或 union

C++ vector char 整数值

c++ - NetFlow v5 - 导出流记录缺失字段

c++ - Eigen 从 Affine3d 3x3 旋转矩阵中提取的四元数是否被归一化?

c++ - 为什么比较函数类型需要指定为模板参数?

c++ - gcc reverse_iterator 比较运算符丢失了吗?