คำถามติดแท็ก list-initialization

4
ทำไมการเริ่มต้นรายการ (โดยใช้เครื่องหมายปีกกาแบบโค้ง) ดีกว่าตัวเลือกอื่น ๆ
MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); ทำไม? ฉันไม่พบคำตอบใน SO ดังนั้นให้ฉันตอบคำถามของฉันเอง


1
ฉันสามารถ 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 …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.