您使用的是什麼C++編譯器? VC10(即下在VS2010 ++編譯器)在調試生成正確地識別這些問題:
// Compile with:
// cl /EHsc /W4 /nologo /D_DEBUG /MDd test.cpp
#include <iostream>
#include <string>
#include <vector>
class Face
{
public:
std::string Name;
explicit Face(const std::string & name)
: Name(name)
{}
};
int main()
{
std::vector<Face> faces;
faces.push_back(Face("Connie"));
faces.push_back(Face("John"));
for (
std::vector <Face>::iterator f = faces.begin();
f != faces.end() + 5;
++f)
{
std::cout << f->Name << std::endl;
}
return 0;
}
當執行所得到的.exe,一個錯誤對話框顯示與以下錯誤消息:
表達:向量的迭代器+偏移超出範圍
只是不這樣做?至於檢測,搜索*檢查迭代器*。 – 2012-01-14 18:40:20
由於需要運行時性能,調試版本通常會捕獲我使用Release的 – pezcode 2012-01-14 18:49:52
。 – Shibli 2012-01-14 18:54:49