問題タブ [reverse-iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
215 参照

c++ - C ++でセットから最後の要素を消去する

水平線の間のコードで、セットから最後の要素を消去しようとしています。

s.erase( --s.end( ) ) の代わりにs.erase( s.rbegin( ) )を書くと、次のようなコンパイル エラーが表示されます。

s.rbegin() と --s.end() が同じ要素を指していませんか?

0 投票する
1 に答える
267 参照

c++ - 逆イテレータ .rbegin() を削除する要素の位置として使用できないのはなぜですか?

a の逆方向反復子は、 astd::map.rbegin()で最大の key_type を含む要素の位置を返しますstd::map
最大のキーを持つ要素には、次のmap.rbegin()ように返される位置を使用してアクセスできます。
map.rbegin()->first

ただし、 によって返される位置map.rbegin()を使用してこの要素を消去することはできません。

同じ位置にアクセスできるのに消去できないのはなぜですか?

関数/メソッドが 1 つの位置のみを取得するために反復子を必要とする場合、それがどの種類の反復子であるかは重要ではないと私には思えます。
そのイテレータが 1 つの位置以外の何かを記述した場合 (方向なども...)、状況は異なります。

注: 「逆イテレータを使用して消去を呼び出す方法は?」とは質問しませんでしたが、コードの最後の行でこの操作の解決策を提供しました。
逆イテレータで消去できない理由を尋ねています。つまり、消去する 1 つの要素の位置を取得するためだけに使用する必要がある場合、STL は単純にstd::map::reverse_iteratorto をキャストしないのはなぜですか。std::map:iterator

0 投票する
1 に答える
118 参照

c++ - `std::filesystem::path` の逆反復子はありませんか?

逆イテレータ (つまりand )std::filesystem::pathを提供しない技術的な理由はありますか?rbeginrend

std::filesystem::pathforが/a/b/c/b/d/b/eあり、 に一致する最初のコンポーネントを見つけたい場合はb、 を使用できますstd::find(p.begin(), p.end(), fs::path("b"))

しかし、 に一致する最後のコンポーネントを見つけたい場合、b単純に逆反復子に切り替えることはできません。私は自分のループを書くことができますが、これは「ほとんど自由に」実装できる一般的な操作のようです。

逆イテレータを提供することを困難にするインターフェイスの設計について何かありますか?