要素を完全に転送してstd :: vectorをリスト初期化できますか?
std :: vectorの集約 リストの初期化は、移動がより適切な場合にコピーの初期化を実行することに気付きました。同時に、複数のemplace_backsが必要な処理を実行します。 テンプレート関数を書くというこの不完全な解決策しか思いつかなかったinit_emplace_vector。ただし、明示的ではない単一値コンストラクターにのみ最適です。 template <typename T, typename... Args> std::vector<T> init_emplace_vector(Args&&... args) { std::vector<T> vec; vec.reserve(sizeof...(Args)); // by suggestion from user: eerorika (vec.emplace_back(std::forward<Args>(args)), ...); // C++17 return vec; } 質問 std :: vectorをできるだけ効率的に初期化するために、本当にemplace_backを使用する必要がありますか? // an integer passed to large is actually the size of the resource std::vector<large> v_init { …