STLなどの書籍のいたるところにその記述が見られる。vectorが保持するメモリ領域を縮小したい場合の措置として、swapを用いた技法などトリッキーな技まで紹介される始末だ。ところが、今朝方プロファイルをとってみて、vector::clearしか呼んでいないはずの場所がやたら時間を食っていることに気づいた。7.1のvectorのソースを覗いてみると......なんと、clear()でメモリを完全に解放している。unnoの提唱した「ローカルにvectorを置かないでメンバ変数にしてclearだけしてごまかす」という手法でほとんど速くならなかったのはこのせいか。unnoはSTLportを使っているので、標準的なvectorの実装を使っているのではないかと推定。DinkumwareのSTLは実装の点でSTLの常識と大分食い違っているような気がする。それには実装者の思想があるのだろうけど。俺もSTLportを使うか、というところだが、配布の点から考えるとちょっと面倒だ。vector」を書くかな。boost::arrayも思い浮かんだが、こいつは本当の固定長で、「現在の要素数」というカウンタを変更できないので却下。1Mnps(今日のFFO)。