Użyj gotowej metody z nagłówka algorithm:
auto element = std::find(vec.begin(),vec.end(), str);
która zwróci Ci iterator, który przekażesz do:
vec.erase(element);
Jeśli natomiast bardzo zależy Ci na samym indeksie to zrób w ten sposób:
for (size_t i = 0;i<vec.size();++i)
{
if (vec[i].imie == str)
{
return i;
}
}
Albo bardziej bibliotecznie:
auto it = std::find(vec.begin(), vec.end(), str);
if (it == vec.end()){
// str not in vector
}
else{
auto index = std::distance(vec.begin(), it);
}