Steven Schveighoffer wrote:
You still have not addressed the usage of iterators as general data
structure pointers. As far as I can tell, ranges do not implement this.
i.e. find surrounding elements of an element.
With iterators:
auto iter = container.find(elem);
auto elembefore = iter - 1;
auto elemafter = iter + 1;
Assuming incrementing and decrementing an iterator is checked for
out-of-bounds.
The problem is that last statement - "Assuming". If the iterator is the
first or the last, or if there's only 1 or 2 elements in the container,
it's crash city. Iterators are *inherently* uncheckable.
For finding the elemafter, it's trivial as find() returns a range from
the found element to the end (and it's also trivially checkable!).
For elembefore, there's a bit more work involved, probably defining a
find() that returns a range backed up by one one.