指向矢量迭代器返回值的指针

Pointer to return value of vector iterator

本文关键字:返回值 指针 迭代器      更新时间:2023-10-16

我有一个结构向量,例如

struct IDS{
   string name;
   int age;
   IDS(string name, int age){
    this->name = name;
    this ->age = age;
   }
}
vector<IDS> myVector;

我正在用structs填充这个向量,稍后我想找到一个具有特定值的structs并保存指向它的指针

IDS *tmp;
auto it = find_if (temp->myVector.begin(), temp->myVector.end(), [&](const IDS &y) { 
    return y.age == age; 
});
if ( it != temp -> myVector.begin() ){
    tmp =it
}

矢量在链表中。这引发了这个错误

无法转换'__gnu_cxx::__normal_iterator

'到分配|中的"IDS*"

如何修复此错误,以及如何存储迭代器指针?

it是迭代器,而不是指针。您可以使用tmp = &(*it);将迭代器转换为指针。

或者,您可以将tmp设置为std::vector<IDS>::iterator