スマートフォン用の表示で見るタイトルって難しい。学力も体力もない人間の雑記帳。2016-07-08【C++】配列とVectorとArrayで比較C++きっかけ以前、C++で実装した際に、コードを読まれた方からなんでVectorにしないの?と聞かれたことがありました。機能面での違いはたしかにありますが、固定サイズならば別に配列でもOKではと思っていたのですが、ふと気になったので調べてみました。比較した方法は次の4通りです。配列(一番最初に習うであろうもの)Vector(配列っぽく)Vector(push_back)Array(C++11から追加されたもの)Vector同士で比較しているのは、配列っぽく使うパターンと、push_backで代入させた場合のものの2種類です。push_backは遅いと書いていらっしゃる方もいたので、比較として入れてみようと思い、含めました。コードダメダメながらも書いたコードは次に続きます。やったことはすごく単純で、10万のデータを作って、そのデータから総和を求めるという操作です。良いベンチマークがあるかもしれませんが...。単位はすべて、μsことマイクロ秒(100万分の1秒)。rev2とついてるものは修正版です。./array_cpp11_rev2.out528μsやっぱりpush_backは遅いですね。Vectorを配列っぽく使うと配列と変わらない速度みたいです。あと意外にもC++11から追加されたArrayはわずかながら配列より遅いみたいです。思っていましたが、初期化を行ったうえで再実験行ってみたら配列が一番高速でした。次に、Array(C++11以降)が速いという結果となりました。まとめ今後はVectorを配列っぽく使います。いや、修正した結果、配列が速かったのでやっぱり配列が一番ですね。UTC+9)一部のコードを修正前のものを記載していました。結果は修正後のものを記載しているため、変化ありません。UTC+9)研究室の先輩(id:togatogah)から、「配列とArray(C++11以降)の初期化されていない可能性があるのに対し、Vectorは構築時に必ず初期化を行うので、配列とArrayを初期化してみてはどうか」という提案がありました。そこで試してみたところ、大きく結果が変わりました。id:togatogahさんありがとうございました。»プロフィールid:cancolleしょうもない項目の連続です。(1)リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!cancolleさんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?はてなブログをはじめる(無料)はてなブログとはタイトルって難しい。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。