Разбираем, как ускорять поиск данных с помощью индексов и при этом не сломать согласованность: почему нужен один «источник правды», что такое инварианты, как строить схему
id → позиция и вторичные индексы (
email,
tag), чем опасны указатели/итераторы на элементы
std::vector, как правильно делать удаление через
swap-erase, когда выгодно
rebuild индекса, и почему
assert помогает ловить рассинхронизацию раньше, чем её увидит пользователь.