Our coding guidelines prefer const_iterator, because they are a little faster compared to a normal iterator. It seems like the compiler optimizes t
They are for non-trivial containers/iterators. Get your habits straight and you won't lose performance when it does matter.
Also, there are several reasons to prefer const_iterator, no matter what:
begin() to flag data as dirty (i.e. OpenSG) and will send it to other threads/over-network on sync, so there it has real performance implications.As an example of the last point above, here's an excerpt from qmap.h in Qt:
inline iterator begin() { detach(); return iterator(e->forward[0]); }
inline const_iterator begin() const { return const_iterator(e->forward[0]); }
Even if iterator and const_iterator are practically equivalent (except for the const),
detach() creates a new copy of the data if there are two or more objects using it. This is completely useless if you're just going to read the data, which you indicate by using const_iterator.
Of course, there are data points in the other direction: