4

重複の可能性:
消去と削除の違い

コンテナがあるとします....次の意味は何ですか。

c.erase(remove(c.begin(),c.end(),99),c.end());

同じことを消去して削除していませんか?上記の例の消去と削除の特定の機能は何ですか?

4

1 に答える 1

10

に等しいすべての要素99を container から削除しますc

std::remove実際には要素を削除しません。対象のすべての要素をコンテナーの 2 番目の部分に移動し、これらの最初の部分を示す反復子を返します。次に、eraseメンバー関数は反復子の範囲を取り、実際にコンテナーから要素を削除します。

erase-remove idiomを参照してください。

于 2012-12-14T07:52:18.963 に答える