私はそのようなことを正しく理解してプログラムすることができません (私は初心者です): 私にはベクトルがあります。ベクトルには、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 ベクトルが削除されました。
classA tmp;
for (std::vector<std::classB>::iterator iter = newW.begin(); iter != newW.end(); iter++)
{
tmp.set_fieldA(iter->a);
tmp.set_fieldB(iter->b);
tmp.set_fieldC(iter->c);
objA.push_back(tmp);
}
vector<std::classA> objA;
for(int i = objA.size()-1; i > 0; i--)
{
if (objA[i].fieldA == 0.0)
if (objA[i-1].fieldA == 0.0)
objA.erase(objA[i-1]); //remove last vector from array
}