คำถามติดแท็ก return-value-optimization

4
ตัวเลือกการคัดลอกและการเพิ่มประสิทธิภาพค่าตอบแทนคืออะไร?
การคัดลอกข้อมูลคืออะไร? การเพิ่มประสิทธิภาพค่าที่ส่งคืนคืออะไร พวกเขาหมายถึงอะไร พวกเขาสามารถเกิดขึ้นได้ในสถานการณ์ใด ข้อ จำกัด คืออะไร หากคุณได้รับการอ้างอิงกับคำถามนี้คุณอาจจะมองหาการแนะนำ สำหรับภาพรวมทางเทคนิคดูมาตรฐานอ้างอิง ดูกรณีทั่วไปที่นี่

7
ใน C ++ การคืนเวกเตอร์จากฟังก์ชันยังคงไม่ดีอยู่หรือไม่?
เวอร์ชันสั้น:เป็นเรื่องปกติที่จะส่งคืนวัตถุขนาดใหญ่เช่นเวกเตอร์ / อาร์เรย์ในภาษาโปรแกรมหลายภาษา สไตล์นี้เป็นที่ยอมรับใน C ++ 0x หรือไม่ถ้าคลาสมีตัวสร้างการย้ายหรือโปรแกรมเมอร์ C ++ คิดว่ามันแปลก / น่าเกลียด / น่ารังเกียจหรือไม่? เวอร์ชันยาว:ใน C ++ 0x ยังถือว่าเป็นรูปแบบที่ไม่ดีหรือไม่? std::vector<std::string> BuildLargeVector(); ... std::vector<std::string> v = BuildLargeVector(); เวอร์ชันดั้งเดิมจะมีลักษณะดังนี้: void BuildLargeVector(std::vector<std::string>& result); ... std::vector<std::string> v; BuildLargeVector(v); ในเวอร์ชันที่ใหม่กว่าค่าที่ส่งกลับมาBuildLargeVectorคือ rvalue ดังนั้น v จะถูกสร้างโดยใช้ตัวสร้างการย้ายstd::vectorโดยสมมติว่า (N) RVO ไม่เกิดขึ้น แม้กระทั่งก่อน C ++ 0x รูปแบบแรกมักจะ "มีประสิทธิภาพ" เนื่องจาก …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.