【发布时间】:2011-06-21 11:28:20
【问题描述】:
我有一个定义如下的向量
vector<Field> m_vField;
我用这个命令填充向量:
AddFiled(const Field& aiField)
{
m_vField.push_back(aiField);
}
但是当我尝试运行迭代器时,向量在第一次迭代后因“访问冲突读取位置”而崩溃
vector<Field>::iterator it;
for(it = m_vField.begin(); it != m_vField.end() ; it++)
{
dosomthing
}
感谢您的帮助。
【问题讨论】:
-
您发布的代码是可以的。错误可能在“dosomthing”中。请发布更多代码。
-
您在发布的代码中有两个向量名称(m_vField 和 vField) - 剪切/粘贴错误?另请说明您如何使用迭代器。
-
dosomthing是否修改it,或者在向量中添加或删除元素?您发布的代码不会导致访问冲突。 -
向量是在类中声明的还是什么?只是一个疑问,因为您已经编写了一个单独的函数来推入向量,当您也可以直接执行它时。
-
还有一件事:使用
++it对抗it++。it++源代码通常看起来像这样:iterator operator++(int i){ iterator temp = (*this); ++(*this); return temp; };