ควรใช้เพื่อวัตถุประสงค์std::get_temporary_buffer
อะไร? Standard กล่าวต่อไปนี้:
รับตัวชี้ไปยังหน่วยเก็บข้อมูลที่เพียงพอสำหรับจัดเก็บวัตถุ T ที่อยู่ติดกันได้สูงสุด n ตัว
ฉันคิดว่าบัฟเฟอร์จะถูกจัดสรรบนสแต็ก แต่นั่นไม่เป็นความจริง ตามมาตรฐาน C ++ บัฟเฟอร์นี้ไม่ได้เกิดขึ้นชั่วคราว ฟังก์ชันนี้มีข้อดีอะไรบ้างเมื่อเทียบกับฟังก์ชันโกลบอล::operator new
ซึ่งไม่ได้สร้างอ็อบเจกต์ด้วย ฉันคิดถูกหรือไม่ที่ข้อความต่อไปนี้เทียบเท่า
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
ฟังก์ชันนี้มีเฉพาะสำหรับน้ำตาลไวยากรณ์หรือไม่? ทำไมถึงมีtemporary
ชื่อ?
มีการแนะนำกรณีการใช้งานหนึ่งกรณีในวารสารของดร. ด็อบบ์วันที่ 1 กรกฎาคม พ.ศ. 2539สำหรับการใช้อัลกอริทึม:
หากไม่สามารถจัดสรรบัฟเฟอร์ได้หรือมีขนาดเล็กกว่าที่ร้องขออัลกอริทึมยังคงทำงานได้อย่างถูกต้องเพียงแค่ช้าลงเท่านั้น
std::get_temporary_buffer
จะเลิกใช้งานใน C ++ 17