<div dir="ltr">It will be impossible without huge additional overhead.<div>I assume that &quot;invalidated&quot; means &quot;no more points to that element&quot;.<div><br></div></div><div>Consider that an element is inserted in the middle of an Array.</div><div>Assuming enough capacity, all iterators after that one will be invalidated.</div><div>But all new iterators pointing to the same spots will be valid.</div><div>How do you differentiate between the &quot;old&quot; ones and the &quot;new&quot; ones?</div><div><br></div><div>I see only one general approach to this:</div><div>1. Make iterator type a class</div><div>2. Add to the collection, an array of all iterators, which have been created (and are being used)</div><div>3. Add a &quot;valid&quot; flag to iterator</div><div>4. On most operations on the collection, it will walk through its iterators, marking some as &quot;invalid&quot;.</div><div><br></div><div>It&#39;s a safe way to eliminate some &quot;out of bounds&quot; errors, but it&#39;s just utterly rediculous.</div></div>