2019年7月19日金曜日

boost C++ std::vector ループ中に要素を削除する

基本的には以下の方針でループ中に条件に一致する要素を削除できる

auto itr = numbers.begin();
while (itr != numbers.end())
{
    if(((*itr) == a) || ((*itr) == b))// 削除条件の判定
    {
        // erase関数の返り値で次要素のポインタが返る
        itr = numbers.erase(itr);
    }
    else
    {
        itr++;
    }

}

0 件のコメント: