問題タブ [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.
c++ - コンテナーから要素を削除する単一ステートメント メソッド
次のコードのように、コンテナから要素を削除する単一のアルゴリズムはありますか?
c++ - ブースト バインド コンパイル エラー
次のようなエラーが表示されます。
誰かが私が間違っていることを教えてもらえますか?
c++ - C ++位置ではなく値でベクトル要素を消去しますか?
そして、ベクトルの値がこれであるとしましょう(この順序で):
「8」の値を含む要素を消去したい場合は、次のようにします。
それは4番目の要素を消去するからです。しかし、値「8」に基づいて要素を消去する方法はありますか?好き:
または、単にすべてのベクトル要素を反復処理してそれらの値をテストする必要がありますか?
c++ - 消去-ネストされたコンテナで削除するためのイディオムを削除しますか?(外側のものを削除する; C ++ STL)
ベクトルのようなネストされていないコンテナから削除するときは、次のようなことをします。
それはいわゆるerase-removeイディオムです。
今、私は2番目のデータ構造vector<vector<unsigned int> >
またはを持っています。ここで、ビットセットに従ってdeque<vector<unsigned int> >
外部コンテナ要素(それ自体が内部タイプのコンテナです)を削除します。
- このネストされたコンテナタイプでerase-removeイディオムを使用することは可能ですか?
- もしそうなら、それはどのように可能ですか?
- 制限はありますか?(例:vecのvecは可能ですが、vecのdequeはできません)?
私の最初の素朴なアプローチは次のとおりでした。remove_ifは、要素を順番に順番に繰り返し、次々に決定すると仮定しました。それは間違った仮定ですか?
結果は間違っているので、ここで正しい解決策を探しています。私はいくつかのことを想定したと思いますが、それは保証されていません。私にとって、基本的な質問は次のとおりです。削除するかどうかを確認するために内部コンテナのIDを取得する方法。。
上に投稿された私の素朴なアプローチは、順次処理を数え、想定しています。
ご協力いただきありがとうございます。
サシャ
更新と警告
ベクトルoベクトルの場合、Stasソリューションはうまく機能しています。ただし、両端キューは連続して保存されないため、このソリューションはベクトルの両端キューでは機能しないと思います。これは、ファンクターのインデックスの計算が失敗することを意味します。
誰かがそれを確認できますか?
c++ - std :: remove_if-ラムダ、コレクションから何も削除しません
わかりました、私はここでばかげた間違いをしたと思います。DisplayDevice3dのリストがあり、各DisplayDevice3dにはDisplayMode3dのリストが含まれています。DisplayMode3dを持たないDisplayDevice3dのリストからすべてのアイテムを削除したいと思います。私はそれを行うためにラムダを使用しようとしています、すなわち:
MyDisplayDevicesの6つのDisplayMode3dのうち、ModesコレクションにDisplayMode3dが含まれているのは1つだけですが、リストから削除されるものはありません。
私はここでどんな多くの間違いを犯しましたか?
編集:
ああ、私の間違いは、std :: remove_ifの代わりにMyDisplayDevices.remove_ifを使用する必要があるということでしたが、以下の答えはstd :: remove_if:pの使用に対して正しいです。
c++ - C ++でremoveコマンドを使用して文の空白を削除するには?
入力としてファイルを取得し、次のように最初の行を読み取ります (引用符は開始と終了を示しますが、ファイルにはありません)。
次のような削除コマンドを使用すると:
私は次のように出力を得ました:
出力1,2.0,3.0,4.0
のみが必要です。ここで何が問題なのですか?
c++ - インデックスに基づいてベクトル要素を削除します
インデックスに基づいてベクトルの要素、たとえばすべての偶数インデックス要素を削除したかったのです。消去削除イディオムについて読みましたが、適用方法がわかりません。これは私が試したものです:
これにより、ベクトル全体が消去されます。削除アルゴリズムによってマークされた要素のみを削除することを望んでいました。
それから私はこれを試しました
削除中に問題があるため、これも機能しません。ベクトルを反復処理している間にインデックスがシフトしているように見えます。これを達成するための正しいアプローチは何ですか。
c++ - remove_if() 実行後の erase()
文字列のベクトルを実行し、長さが 3 以下の文字列を削除する関数を作成しました。これは、STL アルゴリズム ライブラリの使用に関するレッスンです。
関数が機能するという問題がありますが、長さ3以下の文字列を削除するだけでなく、文字列「ベクター」を最後に追加します。
出力は
代わりに
どうすれば修正できますか?
c++ - ラムダから for_each イテレータにアクセスする
std::for_each イテレーターにアクセスできるので、ラムダを使用して std::list から現在の要素を消去できます (以下のように)
[](typename T::value_type x){ delete x; の使用について読みました。ここでは SO ですが、VS2010 ではこのステートメントが気に入らないようです (エラー ソースとして T に下線が引かれています)。