push_backよりもemplace_backを使おう
emplace
push_backでは無駄なコストが発生してしまいます。
そこで、直接コンストラクトできるemplace_backがC++11から追加されました。
#include<vector> namespace torini{ struct Data{ Data(int, int, int){} }; } int main(){ std::vector<torini::Data> v; // 無駄にコンストラクトしてしまう v.push_back(torini::Data(0, 1, 2)); // 綺麗だし、コンストラクトコストが発生しない v.emplace_back(0, 1, 2); }
使い分け
全部emplace_backでも良い気はしますが、あえて明示的にする為にコンストラクタが存在する要素の場合のみemplace_backを使う等が良い気がします。