std::vectorのスピードとか・・・。
d:id:Cryolite:20040714#p3
より。std::vectorについてだ。
私はstd::vectorは結構、優秀な方のコンテナだと思うし、*1使うときには使う。
しかしだ・・・。あれだ!std::vectorは
C言語でも使える型*2にははっきり言って使えないのだ。
例えば、unsigned char型をpush_backしていたら普通の動的確保+memcpyの100倍かかっちゃた。って事もある。*3
一応、std::vectorの使い方にも裏技もある。
http://www.s34.co.jp/cpptechdoc/article/vectorastemp/
しかしだ、この裏技を使うと、size()が書き込んだ値を返してくれないのだ。*4
やっぱり、テンポラリバッファとしての利用が前提のようだ。
個人的にはやっぱりそのページでも紹介されているようにscoped_arrayを使った方が幸せかと・・・。
という事でこのジレンマをどうにかすべく、車輪の再発明をしたのが、byte_buffer*5 と scoped_buffer だ。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/dkingyoutility/dkutil/dkutilBuffer.h
scoped_array
このクラスは一番 使用頻度が高い。
私のC++のソースコードの中にこのscoped_bufferが登場しないソースはかなり珍しい。
それくらい、今は重宝している。