Training for D-Day

ブログの内容は個人の見解であり、所属する企業を代表するものではありません。

std::vectorとlistの操作毎のパフォーマンス優劣

C++が熱いです。 std::vectorとlistってありますけど どちらも動的に配列拡張ができるぐらいと思っていましたが、Efficient C++を読んで以下のような優劣があるようです。

操作 std::vector std::list
挿入 先頭 負(そもそも関数が用意されていない)
中間
末尾
削除 先頭
中間
末尾
探索(全件)
検索(一件)

ほとんどのケースでvectorが圧勝。

また、vectorの場合はあらかじめ拡張予定の要素数をreserveで予約しておけば、さらに速いです。 用途にも依存しますが、基本はvectorを選んでおいたほうが良さそうですね。

Efficient C++パフォーマンスプログラミングテクニック

Efficient C++パフォーマンスプログラミングテクニック

  • 作者: ダブブルカ,デビットメイヒュ,浜田光之,Dov Bulka,David Mayhew,浜田真理
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/07
  • メディア: 単行本
  • 購入: 9人 クリック: 149回
  • この商品を含むブログ (31件) を見る