EXC_BAD_ACCESS当使用vector迭代器时
EXC_BAD_ACCESS when using vector iterators?
我有一个用户定义类型的向量的向量(矩阵),my_type
,它是一个结构体,包含整数a, b和c。我希望定义一个函数,该函数通过b的值找到该矩阵的一个元素并删除该元素。由于函数不知道c的值,我定义了一个迭代器it
来首先找到这个元素,然后将它的指针地址设置为迭代器it_found
,以便它可以在erase()方法中使用。然而,当使用it_found
时,程序产生了一个错误,Program received signal EXC_BAD_ACCESS, Could not access memory,
。是什么导致了这个错误?
bool remove_V(int a, int b) {
typename std::vector<my_type>::iterator it;
typename std::vector<my_type>::iterator it_found;
for(it = V.at(a).begin(); it != V.at(a).end(); ++it){
if ((*it).b == 1) {
it_found == it;
std::cerr << (*it).b << "n";
std::cerr << (*it_found).b << "n";
}
}
}
我想:
it_found == it;
^^^^
应:it_found = it;
^^^
否则就是对一个不指向任何有效对象的迭代器解引用。
此外,您可能希望使用Remove-Erase习语.
您没有将it_found
初始化为任何值,因此(*it_found)
抛出错误。我想你的意思是:
it_found = it;
代替
it_found == it;
相关文章:
- std::vector::迭代器是否可以合法地作为指针
- 从 std::vector 迭代器中执行函数指针
- c std :: vector迭代器构造函数,first == last
- 为什么 std::vector 迭代器在 erase() 调用后失效?
- Vector::迭代器在与开始比较时崩溃
- 为自定义类继承std::vector::迭代器
- 为什么 vector::迭代器在重新分配时失效
- C++ std::vector 迭代器错误
- 如何拥有:map<T,vector<迭代器来映射自身> >?
- 为什么std::vector迭代器在重新分配其他向量时无效
- 试图让Vector迭代器以不同的顺序进行迭代
- vector的vector迭代器
- 使用std::vector::迭代器修改存储在std::vector中的值
- 迭代并移除Vector中的元素.错误:Vector迭代器不可递增
- 将vector迭代器转换为成员指针
- Vector迭代器在类中不兼容
- 调试断言:Vector迭代器不兼容(c++)
- c++ PugiXML Vector迭代器不兼容错误
- Vector迭代器在c++中不兼容
- 为什么vector迭代器没有显示operator= ?