ฉันสามารถ list-initialize std :: vector พร้อมการส่งต่อองค์ประกอบที่สมบูรณ์ได้หรือไม่?
ฉันสังเกตเห็นว่ารายการรวม initalization ของ 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; } คำถาม ฉันจำเป็นต้องใช้ emplace_backเพื่อเริ่มต้น std :: vector ให้มีประสิทธิภาพมากที่สุดหรือไม่ // an integer passed to large …