- 206 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 15:57:34 ]
- >>199
全体のデータサイズよりも、文字列の個数によって方法論が決まってくるんじゃないかな。 stringの実装には色んなやり方があるけど、いずれの場合も、サイズの大きな中身はポインタで持ってる。 だから、10MB使用している状態でvectorが要素を再配置したからといって、その10MBのすべてが せっせと大移動を繰り広げるわけではない。 たとえばvector<string>の要素数が10で、それぞれのstringサイズが1MB、合計10MBのとき、 そのあとpush_back()で再配置が起きても、移動するのは「string型そのもの」だけ。 string型自体のサイズは、せいぜい数バイトから多くても20バイト台で、これが10個コピーされるだけってことになる。 でも、「平均10バイトの文字列が100万個で10MB」となると、これの再配置は確かにコストが高いわけで、 つまりこの辺は、君がイジろうとしているデータの性質次第で、アプローチが変わってくる部分だと思う。
|

|