Мне интересно, есть ли какая-либо структура, которая реализует коллекцию, которая будет иметь следующее поведение.
Предположим, что он изначально содержит :[1, 2, 3]
То же самое должно применяться для удаления элементов. Если я удалю 3 вместо добавления, второй итератор должен дать мне [1, 2], в то время как первый все равно даст мне 3 и конец.
Поэтому, когда я получаю итератор, я хочу, чтобы он дал мне коллекцию, которая у меня была, когда я создал итератор (, даже если я повторю его позже, я немного повторю и продолжу позже ), когда я сбрасываю итератор, он получает собранный мусор, он будет обновляться до последних версий, и я должен иметь возможность создавать несколько экземпляров итератора в разное время, которые будут давать разные версии в зависимости от содержимого массива при создании итератора.
Мне нужно, чтобы он хорошо работал с несколькими потоками и, желательно, имел эффективную реализацию.
Кто-нибудь знает о какой-либо реализации такой коллекции, или я должен реализовать ее сам?