問題タブ [erase-remove-idiom]

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 に答える
165 参照

c++ - remove_if を使用すると要素はどうなりますか?

私はどのように機能するかを理解しようとしていますremove_if(<<オーバーロードされています)。そのために、「C」で始まるすべての文字列を remove_if したい:

出力:Initial vector: Python C++ C Java C# | Size = 5

それから私は書きます:

出力 2 :After remove_if: Python Java C C# | Size = 5

私が理解していること:残っているべき要素が最初に削除され、*it現在は等しい"C"

質問: はどうなり"C++"ますか? 交換した場合"Java"、その理由

出力3を与えます:C C#そしてそうではありません"C", "Java", "C#"か?

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

c++ - 逆イテレータで消去削除イディオムが機能しない理由

私の目的は、この質問の解決策を試すことでした:ベクター内のすべての空の要素を end から削除します消去削除イディオムを使用します。

アイデアは、指定された文字列で空 (空白に等しい) である最後から始まるすべての要素を削除することstd::vector<std::string>です。空でない要素が見つかった場合、要素の削除は停止する必要があります。

例:

削除後:

これが私が試した解決策です:

これによりエラーが発生しました:

次に、ここの作業について読みstd::vector::erase()ました: Does vector::erase not work with reverse iterator?

そしてコードを変更しました:

今回はコンパイルしましたが、出力=元のベクトルが得られました。

誰でも説明できますか:

  1. なぜこれが起こったのですか?
  2. 可能であれば、どうすれば修正できますか?
0 投票する
1 に答える
688 参照

c++ - C++ で文字の配列から文字を削除する

文字列から部分文字列を削除する方法を作成しようとしています。それは char 形式なので、喜んで文字列に与えられる便利な手段を使用できません。私はそれを検索する方法を知っています。インデックスを見つけることはできますが、文字を削除するのは私にとって少し冒険でした。誰かが何かアイデアを持っているなら、私はそれを大いに感謝します. ありがとう。

性格上Replaceメソッドは使えません。入れ子になったループを試しましたが、 と の非互換性のために行き詰まりcharますint。誰かに提案があれば、私はすべて耳にします。スタック コミュニティに感謝します。

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

c++ - erase-remove イディオムの場合、コンテナーの末尾を指す 2 番目のパラメーターが必要なのはなぜですか?

次のコードを考えてみましょう ( cppreference.comから取得し、わずかに変更):

なぜ2番目のパラメータが必要なのeraseですか? (つまりstr1.end()、この場合。)

removetoによって返されるイテレータを提供できないのはなぜeraseですか? 消去するコンテナーの最後の要素についても通知する必要があるのはなぜですか?

ここでの落とし穴はerase、2 番目のパラメーターなしで呼び出すこともできますが、明らかに間違った結果になることです。

コンテナの最後を の 2 番目のパラメータとして渡したくないユースケースはありますeraseか?

erase-remove イディオムの 2 番目のパラメーターを省略すると、erase常にエラーになりますか、それとも有効なことでしょうか?