2010-03-02 1 views
7

Мне нужно отслеживать std :: set, сохраняя итератор, возвращаемый set.find().Как долго итератор, возвращаемый std :: set.find(), живет?

Мои вопросы: есть ли вставка и удаление другие элементы аннулируют полученный итератор? Из простого теста я понял, что это не так, но я бы хотел, чтобы эта функция была разработана.

ответ

11

Он никогда не делает недействительными итераторы или указатели/ссылки на элементы. Только если вы удалите сам элемент, итератор или указатель/ссылка станут недействительными.

23.1.2/8:

Члены вставки не влияет на действительность итераторов и ссылок на контейнер, и члены стирают считаются недействительными только итераторы и ссылки на стертых элементов.

+0

Спасибо. Это было быстро! – jackhab