std::vectorとlistの操作毎のパフォーマンス優劣
C++が熱いです。 std::vectorとlistってありますけど どちらも動的に配列拡張ができるぐらいと思っていましたが、Efficient C++を読んで以下のような優劣があるようです。
操作 | std::vector | std::list | |
---|---|---|---|
挿入 | 先頭 | 負(そもそも関数が用意されていない) | 勝 |
中間 | 勝 | 負 | |
末尾 | 勝 | 負 | |
削除 | 先頭 | 負 | 勝 |
中間 | 勝 | 負 | |
末尾 | 勝 | 負 | |
探索(全件) | 勝 | 負 | |
検索(一件) | 勝 | 負 |
ほとんどのケースでvectorが圧勝。
また、vectorの場合はあらかじめ拡張予定の要素数をreserveで予約しておけば、さらに速いです。 用途にも依存しますが、基本はvectorを選んでおいたほうが良さそうですね。
Efficient C++パフォーマンスプログラミングテクニック
- 作者: ダブブルカ,デビットメイヒュ,浜田光之,Dov Bulka,David Mayhew,浜田真理
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/07
- メディア: 単行本
- 購入: 9人 クリック: 149回
- この商品を含むブログ (31件) を見る