0

getFirst と getNext の 2 つのメソッドを使用する入力反復子があります。これらの関数は両方とも API の一部であり、理論的には、これらの関数は何らかの理由で操作に失敗する可能性があります。この場合、実行時例外をキャストしています。

これまで C++ で例外仕様を使用したことはありませんでしたが、今が開始するのに良い時期かもしれないと考えていました。したがって、Constructor 関数と operator++ 関数は、実行時エラーをスローできるように指定できます。

次に、vector.h ファイル (std::vector) で簡単な検索を行いましたが、そこで使用されているスローが表示されません。どうして?

イテレータの最後に到達して *(i++) を実行した場合、例外が発生しますか?

4

2 に答える 2

2

イテレータの最後に到達して *(i++) を実行した場合、例外が発生する必要がありますか?

はい、エラーです。

例外の指定については、メソッドがスローしない場合を指定することをお勧めします。反対ではありません。この質問を見てください。

于 2012-06-29T07:29:16.527 に答える
0

STL イテレータは自分が指しているコンテナについて何も知らないため、イテレータはコンテナの最後にいつ到達したかを実際には知ることができません。

したがって、それをインクリメントして逆参照しようとすると、無効なメモリにアクセスするためにスローされる可能性がありますが、次のインデックスが有効かどうかを知る方法はありません。

于 2012-06-29T07:33:58.433 に答える