std::remove アルゴリズムはコンテナから要素を取り除かない! 単純に、要素をコンテナの末尾に隔離するだけである。 これは、std::remove アルゴリズムが前方反復子(forward iterator)の対(反復子対(Iterator Pair)イディオム)のみを用いて動作し、一般化された前方反復子のコンセプトは、任意のデータ構造から要素を取り除くする方法を提供しないからである。 コンテナの内部データ構造を知っているのはメンバ関数のみであるため、メンバ関数のみがコンテナから要素を取り除ける。 消去・削除(Erase-Remove)イディオムは、コンテナから実際に要素を取り除くために使用される。 std::remove アルゴリズムは、「削除」された要素群の範囲の先頭を指す反復子を返す。 この時、コンテナの end() 反復子も、サイズも変更されない。 コンテナから実際に要素を