У вас есть две проблемы.Во-первых, у вас есть проблема с недействительностью итератора.Поскольку push_back
увеличивает размер вектора, у него есть возможность вызвать распределение.всякий раз, когда емкость (а не количество элементов) вектора изменяется, все итераторы в векторе становятся недействительными.С этим легче всего справиться, убедившись, что перед началом цикла вызывается reserve()
, чтобы убедиться, что в векторе достаточно места для удовлетворения всех будущих попыток push_back
во время выполнения цикла.
Другая проблема, как упоминалось в других публикациях, - это состояние гонки, когда вставка может выполняться одновременно с элементом, к которому осуществляется доступ.