C++ 向量和迭代器

C++ 向量和迭代器,c++,iterator,std,C++,Iterator,Std,我有一个向量,定义如下 vector<Field> m_vField; 但是,当我尝试运行迭代器时,向量在第一次迭代后由于“访问冲突读取位置”而崩溃 vector::迭代器; for(it=m_vField.begin();it!=m_vField.end();it++) { 多索姆廷 } 谢谢您的帮助。我认为您将变量命名错误。向量不是m_vField,而您在循环中使用了vField 这仍然不能解释为什么迭代代码中的向量会导致访问冲突。此外,在这种情况下,OP在提出问题时几乎总是

我有一个向量,定义如下

vector<Field> m_vField;
但是,当我尝试运行迭代器时,向量在第一次迭代后由于“访问冲突读取位置”而崩溃

vector::迭代器;
for(it=m_vField.begin();it!=m_vField.end();it++)
{
多索姆廷
}

谢谢您的帮助。

我认为您将变量命名错误。向量不是
m_vField
,而您在循环中使用了
vField

这仍然不能解释为什么迭代代码中的向量会导致访问冲突。此外,在这种情况下,OP在提出问题时几乎总是输入错误(尽管并非总是如此)。你应该把它作为评论而不是回答。嗯。。对。假设向量是在类中声明的。只是一个疑问,因为他已经编写了一个单独的函数,可以直接将元素推入向量。您发布的代码还可以。很可能错误在“dosomthing”中。请发布更多代码。您发布的代码中有两个矢量名称(m_vField和vField)-剪切/粘贴错误?还请说明如何使用迭代器。
dosomthing
是否修改
it
,或从向量中添加或删除元素?您发布的代码不会导致访问冲突。向量是在类或其他内容中声明的吗??只是一个疑问,因为您已经编写了一个单独的函数,可以直接将其推入向量。还有一件事:对
it++
使用
it++
<代码>it++源代码通常如下所示:
迭代器操作符++(inti){iterator temp=(*this);++(*this);返回temp;}
 AddFiled(const Field& aiField)
 {
   m_vField.push_back(aiField);
 }
vector<Field>::iterator it;
for(it = m_vField.begin(); it != m_vField.end() ; it++)
{
   dosomthing
}