У меня есть два вектора разных объектов, и я хотел бы работать с их индексами и итераторами.
Вот код:
bool Database::Birth ( const string & name, const string & addr,
const string & acc )
{
SPerson personToAdd = SPerson ( name, addr );
SAccount accountToAdd = SAccount ( acc );
SPiter = lower_bound ( SPeople.begin ( ), SPeople.end ( ), personToAdd );
/* this is the part I can't quite figure out */
size_t iterDistance = distance ( SPeople.begin ( ), SPiter );
SAiter = SAccounts.begin ( ) + iterDistance;
// this is where the segfault is happening
if ( ( SPiter -> s_name == name &&
SPiter -> s_addr == addr ) ||
SAiter -> s_account == acc ) return false;
SPeople.insert ( SPiter, personToAdd );
SAccounts.insert ( SAiter, accountToAdd );
return true;
}
Должно быть очевидно, что я пытаюсь сделать - я хочу вставить один объект (SPerson) в определенное место в своем векторе (SPeople) и другой объект (SAccount) в свой вектор (SAccounts) под тем же индексом. Можно ли как-то извлечь информацию об «индексе» из итератора?
Я нашел несколько похожих вопросов, но решения очень часто работали с циклами, что мне не нужно (и фактически не могу использовать из-за производительности). Я определенно не могу изменить часть с функцией lower_bound.