If you protect it, you will lose your protection because any subclass can change it for the public and allow others to change it.
Why not provide a reference to a constant? If return const iterator, you may need to rewrite many interfaces, including start, end, size, etc.
source share