問題タブ [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++ - これは std::vector でポインタを保存、反復、および削除する良い方法ですか?
それらを割り当て、正しい出力を出力しますが、これが正しいことかどうかはわかりません。ブーストやc ++ 11を使用せずに、ベクターでポインターを使用して、特定の条件が発生したときにそれらを削除しようとしていました。それで、あなたはそれについてどう思いますか?
c++ - C ++では、リスト内の連続するゼロの実行ごとにx個を除くすべてのゼロを削除するにはどうすればよいですか?
C ++のリスト内の連続するゼロの実行ごとに、それらx
を除く実行中のすべてのゼロを削除したいと思いx
ます。の場合x = 0
、すべてゼロを削除します。
list<int> L
リストと数値int x
を入力として受け取るC++関数を考えていました。
たとえば、L = {7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8}
。
- の場合
x = 0
、L = {7, 12, 2, 27, 10, 8}
- の場合
x = 1
、L = {7, 0, 12, 0, 2, 0, 27, 10, 0, 8}
- の場合
x = 2
、L = {7, 0, 12, 0, 0, 2, 0, 0, 27, 10, 0, 0, 8}
- の場合
x = 3
、L = {7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 8}
- の場合
x = 4
、戻りL = {7, 0, 12, 0, 0, 2, 0, 0, 0, 27, 10, 0, 0, 0, 0, 8}
ます(元の値と同じL
) - の場合、 5つ以上の連続するゼロの実行がないため、
x >= 5
元の値を返します。L
数ヶ月前、私はPython( stackoverflow.com/questions/11732554 / ... )を使用して上記と同じ質問をし、優れた回答を受け取りました。ここで、このタスクをC++で完了したいと思います。
どんな助けでも心から感謝します。
c++ - C++ ベクトルのフィールドを削除する
私はそのようなことを正しく理解してプログラムすることができません (私は初心者です): 私にはベクトルがあります。ベクトルには、fieldA、fieldB、fieldC という要素があります。したがって、これらのベクトルの配列があるので、配列の最後のベクトルから始めて、最初のベクトルの方向に向かって、要素の 1 つに特定の値があるかどうかを確認したいと思います。if (vect[i].フィールド A == 0.0)。そのような場合、 (vect[i-1].fieldA == 0.0) が同じ値を持っている場合、配列からベクトル全体を削除したいと考えています。視覚化するコードの一部、適切な「バックイテレーション」ループを作成し、関数を使用してそれを削除する方法を教えてもらえますか? erase()、remove()、deque() を試していましたが、失敗しました。
ここでコードを台無しにしたくありません。
手伝ってくれてありがとう!
編集。したがって、最初にベクトル値を含む配列をループでフィードし、次に、要素固有の値を含むすべてのベクトルを最後から削除します。たとえば、fieldA == 0.0
ベクトルの内容を削除するだけでなく、配列を切り取りたい! classB と classA の間に適切な継承があるため、フィードはうまく機能します。ベクトルを削除してこの問題を解決したいだけです。例: 2 要素のベクトルの配列。入力: 0,1 0,3 3,3 2,3 0,6 5,6 0,8 0,7 0,6 出力:0,1 0,3 3,3 2,3 0,6 5,6 0 、8。結論: 0,7 および 0,6 ベクトルが削除されました。
c++ - ベクター内の要素の消去
だから私は unsigned ints (vector<unsigned int>
と呼ばれるvector1
) のベクトルを持っています。作成した構造体の別のベクトルがあります (vector<struct>
と呼ばれvector2
ます)。vector<int>
のインデックスである整数を保持しますvector<struct>
。たとえば、としましょうvector<int = {5, 17, 18, 19}
。つまりvector2.at(5) == vector2.at(vector1.at(0))
。
構造体には、と呼ばれるブール変数がありますvar
。ほとんどの場合、var
は false です。= trueのすべての要素vector1
を削除したい。var
私がしたことは:
これに関する唯一の問題は、すべての真の要素が削除されないことです。すべての値を削除するために for ループを複数回実行しました。これは正しい動作ですか?そうでない場合、どこで間違ったのでしょうか?
c++ - ここで消去削除イディオムを使用する必要がありますか?
私はstd::vector<IRenderable*>
(_pBkBuffer
以下のコードに)を持っています。これには、変更されない多数の静的オブジェクト (ベクターの先頭) と、その後に可変数の動的オブジェクトが含まれます。
??? には何を入れることができますか?非静的レンダラブルを消去削除するには?
私はそれを知っていますか?指定されたサブセット内のすべてのオブジェクトに一致する必要があります。
まったく消去削除を使用する必要がありますか、それとも別のアプローチを使用する必要がありますか?
c++ - nullptrsを介してSTDリストで削除するC ++マーキングオブジェクト
これが受け入れられる慣行であるかどうか疑問に思っていました:
ここでの考え方は、Items コンテナが外部ソースの影響を受ける可能性があることを示しているということです。アイテムがコンテナーから削除されると、単純に nullptr に設定されますが、その前に RemovedItems に移動されます。
イベントのようなものが影響し、Items
アイテムを追加/削除する可能性があるため、この解決策を考え出す必要がありました。
これは良い考えだと思いますか?
c++ - 一意でないコレクションでの消去削除イディオムの使用
イデオネ: http://ideone.com/NTPVyE
版画:
0、1、0、1、0、1、0、
1、0、0、0、
なぜこうなった?ベクトルの最初の要素だけを削除するべきではありませんか?
std::remove
最初の要素で止まらず、ベクトル全体を通過すると思います。一意でない要素を持つコレクションで消去削除イディオムを使用する方法はありますか?
c++ - STL「消去-削除」イディオム:「サイズ変更-削除」しないのはなぜですか?
std::vector
から目的の項目を完全に削除する良い方法は、erase-remove というイディオムであると一般に理解されています。
上記のリンクに記載されているように (この投稿の日付の時点で)、コードでは、消去と削除のイディオムは次のようになります。
resize-remove
イディオムが機能とパフォーマンスの点でイディオムと同等かどうかを知りたいerase-remove
です。または、おそらく私は明らかな何かを見逃していますか?
次のresize-remove
イディオムは上記のイディオムと同等erase-remove
ですか?
c++ - std::vector から項目の任意のリストを削除します>
配列を表すベクトルのベクトルがあります。行を効率的に削除したい、つまり最小限の複雑さと割り当てで行を削除したい
次のように、移動セマンティクスを使用して、削除されていない行のみをコピーして、ベクトルの新しいベクトルを構築することを考えました。
これが最も効果的な方法ですか?
編集:行を繰り返し下に移動することで、新しい配列の割り当てを回避できると考えました。これは少し効率的で、コードははるかに単純です。
ありがとう!