だから私は 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 (unsigned int i = 0; i < vector1.size(); i++)
{
if (vector2.at(vector1.at(i)).var)
vector1.erase(vector.begin() + i);
}
これに関する唯一の問題は、すべての真の要素が削除されないことです。すべての値を削除するために for ループを複数回実行しました。これは正しい動作ですか?そうでない場合、どこで間違ったのでしょうか?