Используйте std::find_if
, чтобы найти элемент. Это возвращает элементу итератор. И если вы действительно хотите знать индекс, используйте std:distance
:
int id_to_find = 1;
std:size_t found_idx = std::distance(
std::begin(people),
std::find_if(std::begin(people), std::end(people),
[=] (const person& p) { return p.p_id == id_to_find; })
);
Но вам действительно следует использовать итераторы в C ++, если у вас нет веских причин для использования индексов.