だから私は 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 ループを複数回実行しました。これは正しい動作ですか?そうでない場合、どこで間違ったのでしょうか?