4

カスタムの双方向反復子にデクリメント演算子を実装しています。Range の最初の要素を指すデクリメント イテレータは動作が定義されていますか? Range.end() のように、デクリメント後に特別な値がありますか?

4

2 に答える 2

8

すべての標準ライブラリ コンテナーの反復子では、これは未定義の動作です。ただし、独自の反復子クラスを作成する場合は、そうする必要はありません。

于 2012-09-26T17:40:54.583 に答える
3

イテレータの要件はかなり明確です: 24.2.6 [bidirectional.iterators] では、表 110:

--r(式) X&(戻り値の型) pre: というものが存在sr == ++sます。

にはそのようなものがないsためc.begin()、前提条件に違反せずにデクリメントすることはできません。

于 2012-09-26T20:24:01.963 に答える