我有一个向量vector<int> myvecotr
。假设myvector={p1,p2,p3,p4}
,我需要阅读(p1, p2), (p2,p3),(p3,p4)
。
int t1,t2;
for(vector<int>::iterator it=myvector.begin(); it!=myvector.end();++it){
t1=*it;
t2=*(it+1); // the question is here ?
}
当我使用gdb调试它时,
(gdb) p *(it+1)
(gdb) Attempt to take address not located in memory
所以,我的问题是,为什么*(it+1)
有时不起作用,但++it
有效?
非常感谢任何帮助。
答案 0 :(得分:3)
这只是gdb bug,仅此而已。
答案 1 :(得分:2)
当it
位于最后一项时,即myvector.end()
之前的项目,*(it+1)
取消引用myvector.end()
并且您不允许这样做。
++it
没有取消引用迭代器。