gpt4 book ai didi

c++ - 使用 vector 迭代器时出现 EXC_BAD_ACCESS?

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:53 27 4
gpt4 key购买 nike

我有一个用户定义类型的 vector vector (矩阵),my_type,它是一个结构体,包含整数 a、b 和 c。我想定义一个函数,通过 b 的值找到该矩阵的一个元素并删除该元素。由于函数不知道c的值,所以我定义了一个迭代器it来先找到这个元素,然后将它的指针地址设置给迭代器it_found,这样它就可以在 erase() 方法中使用。但是,程序产生了错误,Program received signal EXC_BAD_ACCESS, Could not access memory, when it_found is used.是什么导致了这个错误?

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 Idiom .

关于c++ - 使用 vector 迭代器时出现 EXC_BAD_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com