std::listのiteratorの有効性

通常iteratorは、取得後にコンテナに変更が加えられたら、もはや有効ではない。
しかし、std::list の場合には、その要素自身をeraseしない限りは他の要素を
追加したり削除しても、有効なままであるらしい。これはスタンダートで定め
られていることなので、STLの実装によらず活用できる特性である。

http://www.cplusplus.com/reference/stl/list/insert/

all of the previously obtained iterators and references remain valid after the insertion and refer to the same elements they were referring before.