プロが教える店舗&オフィスのセキュリティ対策術

STLのvectorの削除を行う場合に

vector<myclass> v;
・・・
v.erase(it);
・・・

というように削除するiteratorを渡しますが、
任意のインデックスのvectorを削除した場合は、
どのようにそのiteratorを取得するのでしょうか。

例えばv[5]を削除したのですが、

vector<myclass>::iterator it=v.begin();
for(int i=0;i<5;i++)
it++;
v.erase(it);

というbegin()やend()からのインクリメント・デクリメントで取得するしかないのでしょうか?

ご教示願います。

A 回答 (2件)

一般には



vector<myclass>::iterator it = v.begin();
advance(it,5); // #include <iterator> needed.

でしょうね。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

advanceという便利なものを知らなっかったです。
私の知識不足で、お騒がせしました。

大変助かりました。

お礼日時:2011/03/27 17:21

vectorの反復子はランダムアクセス反復子なので...



vector<myclass>::iterator it = v.begin() + 5;
v.erase(it);

でよいのでは?

listなども含めたコンテナ一般の話であれば、#1の方法しかないと思います。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
大変助かりました。

お礼日時:2011/03/27 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!