あなたは課題を読みすぎていると思いますが、それでもあなたの質問は考慮に値します。
まず、いくつかの考慮事項:
- 変化するイテレータと変化しないイテレータ (
iterator
およびconst_iterator
一般にネストされた型) の両方があり、前者はポイント先の要素への書き込みを許可し、後者は許可しません。
- イテレータは軽量であると想定されており、多くのアルゴリズムで何度もコピーされています
さて、あなたの質問に関しては、境界チェックを実行するかどうかについて、実際に設計上の決定があります。
一般に、C++ の反復子は非常に軽量であるため、境界チェックをまったく実行しません。これが効率の名であり、使わないものにはお金を払わないという哲学です。ユーザーがオーバーシュートした場合... 彼女はUndefined Behaviorの餌食になります。それは何でも起こる可能性があります。
ただし、ほとんどの (すべてではないにしても) STL 実装も問題を認識し、アプリケーションのテスト時に使用できるデバッグ モード (チェック モード) を提供します。もちろん、これらは CPU に関してだけでなく、潜在的にメモリに関しても追加のコストを引き起こします。
そのため、チェックを提供するかどうかはユーザー自身の選択であり、場合によってはオプションで提供することもできます。チェックなしで開始することをお勧めします。システムがどのように見えるかをよりよく理解できるように、後でチェックするだけです。