这是我第一次使用列表 STL,我不确定我想要做的事情是否可行。我有一个包含 class_A 列表的 class_B,我需要 class_B 中的一个函数,它接受一个 ID,在列表中搜索具有相同 ID 的实例,并从列表中获取指向该列表中实例的指针:
bool class_B::get_pointer(int ID,class_A* pointer2A){
list<class_A>::iterator i;
for(i=class_A.begin();i!=class_A.end();i++){
if((*i).get_id()==ID) {
\\pointer2A=(i);<---------------this is what I'm trying to do
return true;
}
}
pointer2A=NULL;
return false;
}
我该如何执行此操作,是否可以从迭代器转换为实例?
编辑:
我在多线程程序中使用这个函数,我不能将迭代器返回给调用函数,因为另一个线程可能会删除列表中的一个元素。
现在我有一个指向我的元素的指针(并且可以说它已锁定,因此无法删除),并且另一个线程删除了另一个元素并在列表上执行了排序,我持有的指针会发生什么?(我不知道列表如何重新排列元素,是通过使用复制 c'tor 复制元素还是通过其他方式完成的?)。
无用 的答案对我来说是最有帮助的(非常感谢),是的,我应该使用对指针的引用,因为我打算更改它。