問題タブ [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 投票する
1 に答える
1084 参照

c++ - リストの_first_要素を削除すると`.rend()`が無効になるのはなぜですか?

XCode4.6を使用してMacOSXでテストされています。

このサンプルコードは、std::list期待どおりに作品の最後の要素を削除することを示しています。へのイテレータ参照list::end()は「最後から1つ」であり、最後の要素を削除しても有効です。

しかし、2番目の例は私の直感に反しています。リストの最初の要素を削除すると、「最初から1つ過ぎた」と思った変更が変更されます。list::rend()

私の期待は間違っていましたか?なぜそれが間違っていたのですか?最後の要素を削除して「最後から1つ」への参照が有効なままであるのに(そうではないのですか?)、.rend()前の要素を削除すると「先頭()の前の1」への参照が無効になるのはなぜですか?

0 投票する
4 に答える
2146 参照

c++ - 演算子 != は std::reverse_iterator c++ に対してあいまいです

逆反復機能を取得するために std::reverse_iterator<> で使用している独自の反復子を実装するコンテナーに取り組んでいます。逆イテレータを rend または rbegin に割り当てることができますが、その機能 (!= または == など) にアクセスしようとすると、次のようになります。

私のイテレータ演算子のオーバーロード:

そして逆イテレータの私の実装

およびイテレータ typedef:

演算子の使用方法

および iterator クラス (const_iterator は同じものですが、const value_type を使用します)

そしてツリークラス:

0 投票する
0 に答える
133 参照

c++ - C++ 11では、「強化されたforループ」を使用して標準コンテナを逆に反復する方法は?

以下は、「強化された for ループ」を使用したfor forward ループの例です。std::deque

特定のSTLコンテナに対して逆に反復する「強化されたforループ」の正しい構文(可能な場合)は何ですか?

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

c++ - 文字列クラスにreverse_iteratorを実装します(rbegin()およびrend()メソッドも)

以下は、私の String クラスのコードです。reverse_iterator と rbegin() および rend() メソッドを実装したいと考えています。assignメソッドのコードを貼り付けました。String::reverse_iterator rbegin = str2.rbegin(); String::reverse_iterator rend = str2.rend(); for(String::reverse_iterator b = rbegin; b!= rend; ++b) { cout<<*b; }

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

c++ - Map C++ 逆反復子

it->ガベージキー値を指します

it++-> 正しいキー値を指す

it-> 最初から正しいキー値を指します。

手伝ってください。

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

c++ - C++ rbegin reverse_iterator のアドレスを変更

私はこのコードでC ++に奇妙な問題があります:

  • rQueue逆の順序で反復するキューです
  • rQueueいつでもメッセージを受け取ることができます
  • last6 行目で受信メッセージの再処理を避けるためにイテレータを追加しました
  • 8 行目では、メッセージを出力した位置を保持し、最後のメッセージよりも新しいメッセージのみを出力したいと考えています。

    私の問題: 反復が終了し、新しいメッセージがキューに追加されると、 iterator の値lastが変更され、 iterator の値と同じになるrstartため、新しく到着したメッセージは 6 行目に出力されません。

last = rQueue.rbegin()キューのロックを解除した後に新しい要素を受け取ると、値が変更される理由がわかりません。

ありがとう。