イテレータを使用して通常の計算を行うことはできますか?つまり、数字を加算するだけですか?一例として、数字を追加するだけでイテレータをインクリメントできますか?
、私は要素vec[3]
を削除したい場合は、私はこれを行うことができます。
std::vector<int> vec;
for(int i = 0; i < 5; ++i){
vec.push_back(i);
}
vec.erase(vec.begin() + 3); // removes vec[3] element
それは私(G ++)のために動作しますが、それはがを保証している場合、私はわからないんだけど働く
ああ、std :: listではうまくいきませんか? – Frank
修正;どの関数がどのタイプのイテレータに利用可能であるべきかを列挙したドキュメントリンクを追加しました。 –
いいえ、そうではありません。 +演算子は、リストイテレータが実行できない "一歩前にこれを先にジャンプ"することを意味します。リスト反復子のような順方向非ランダムアクセスイテレータは、インクリメント(++)演算子をサポートしているため、一度に1つの要素だけ進めることができません。 Toddが述べたように、+演算子を繰り返し呼び出すstd :: advanceを使用すると、非ランダムなイテレータをいくつかのステップで前方に移動するというアイデアを簡潔に表現できます。 –