C++ の string と vector の reserve() の挙動 C++ の string と vector には前もって容量を確保するための reserve() というメンバ関数があります。何気なく使っていた関数ですが最近になって興味深い挙動に気づきました。 reserve() の基本 string と vector の reserve() は前もって容量 (capacity) を確保しておくためのメンバ関数です。前もって容量を確保しておけば、データの追加時に発生する再割り当て (reallo... > このページを見る
最終更新時間:
2009年02月12日00時22分
このエントリーに含まれている商品
Effective STL―STLを効果的に使いこなす50の鉄則
-
¥ 3,360在庫あり。 価格表示について価格は、記載された日付/時刻の時点において正確です。価格は変更される場合があります。購入時にAmazonウェブサイトに表示されている価格が、その商品の販売に適用されます。
-
- 出版社/メーカー:ピアソンエデュケーション(単行本)
- 発売日:2002/01
- Amazon.co.jp 商品ランキング:127,559 位
みんなのブックマーク 人気(0) 新着
-
reserve()
1 RT
- string#reserveとvector#reserveの違い.
- 『# reserve() を間違って使うと非常に非効率 # string の reserve() は現在より容量を減らせる # vector の reserve() は現在より容量を減らせない # string の reserve() は「指数的成長ポリシー」を発動する # vector の reserve() は「指数的成長
- 結論からいうと、 vector の reserve() は容量を減らすことはありません。
- vectorとstringで実装が違うとは思わなかった。vectorだと減らないことは経験的に知っていたが。VC9だとまた全然挙動が違う。
- →「せっかく前もって適切に reserve() していても、処理の途中で余計な reserve() が入ってしまったら台無し」
- 文字列を連結するときはstringstream使ってたから、std::string::reserveのヘンテコ挙動には気がつかなかった











