C++

C++ Code Modernize 01

  • このエントリーをはてなブックマークに追加
  • Pocket

C++ コードモダナイズ シリーズ 01

自分用メモ

emplace_back を使おう

push_backはvalue_typeを受け取る。

右辺値を渡すとそこで一回コピーが走り、要素を構築するときにさらにコピーが走る。

このコピーは問題になることは殆ど無いと思っても良い。

しかし、std::stringのように構築時にヒープにメモリを確保するようなクラスもある。

ヒープの確保は高価である。

 

emplace_backは引数をコンストラクタに完全転送してvectorに要素を直接構築する。

パフォーマンスの問題もあるが、可読性が高いことが大きいと考えている。

push_back(make_tuple(…)) などとやられると読みにくい。

C++11が使えるならemplace_backを使わない理由は殆ど無いだろう。

 

同様のことを言っている人は山ほどいる。

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください