カスタムの双方向反復子にデクリメント演算子を実装しています。Range の最初の要素を指すデクリメント イテレータは動作が定義されていますか? Range.end() のように、デクリメント後に特別な値がありますか?
2 に答える
8
すべての標準ライブラリ コンテナーの反復子では、これは未定義の動作です。ただし、独自の反復子クラスを作成する場合は、そうする必要はありません。
于 2012-09-26T17:40:54.583 に答える
3
イテレータの要件はかなり明確です: 24.2.6 [bidirectional.iterators] では、表 110:
--r
(式)X&
(戻り値の型) pre: というものが存在s
しr == ++s
ます。
にはそのようなものがないs
ためc.begin()
、前提条件に違反せずにデクリメントすることはできません。
于 2012-09-26T20:24:01.963 に答える