ฉันกำลังมองหาโครงสร้างข้อมูลที่จะผลักองค์ประกอบที่เก่าที่สุด / สุดท้ายออกหากมีการแทรกองค์ประกอบใหม่ ตัวอย่างเช่นให้D
เป็นตัวแทนของโครงสร้าง D
มี 3 องค์ประกอบของประเภทNumber
D
ของค่าเริ่มต้นจะเริ่มต้นได้และ1, 2
3
หากผู้Number
ที่มีค่าที่5
ถูกแทรกลงD
, 3
จะถูกผลักออกไปในขณะที่1
และ2
จะถูกเลื่อนขวา
สิ่งแรกที่อยู่ในใจคืออาร์เรย์ แต่คำจำกัดความไม่รวมถึงพฤติกรรมการผลัก
ไม่มีโครงสร้างข้อมูลในตัว แต่มันง่ายที่จะใช้งานโดยใช้ลิสต์ที่เชื่อมโยงรายการทวีคูณเชื่อมโยงรายการใช่มั้ย
—
ไม่พบผู้ใช้
สิ่งที่เกี่ยวกับการใช้เสื้อคลุมรับมรดกจากคิว?
—
Francesco Dondi
void push_replace(T val) { pop(); push(val); }
จากนั้นคุณเพิ่มวิธีการ
@ FrancescoDondi น่าจะเป็น
—
valbaca
T push_replace(T val) { T old = pop(); push(val); return old; }
ตอนนี้มีแน่นอน: คุณเพิ่งกำหนดอย่างไม่เป็นทางการ; บางทีคุณควรถามว่าเป็นที่รู้จักกันดีหรือไม่มีส่วนต่อประสานที่ตกลงกันโดยทั่วไปและมีการติดตั้งใช้งานไหม (ไม่ใช่ว่าสุดท้ายเป็นปัญหาใหญ่)
—
PJTraill
@valbaca ฉันคิดว่า C ++
—
Francesco Dondi
pop()
จะไม่ส่งคืนอะไรเลยเนื่องจากปัญหากับการคลี่คลายคลี่คลายในกรณีที่มีข้อยกเว้นในการคัดลอกวัตถุที่ซับซ้อนดังนั้นคุณควรจะใช้front()
ก่อนถ้าคุณต้องการมันก่อนทิ้ง แต่แน่นอนถ้าคุณไม่สนใจข้อยกเว้นในแบบของคุณจะดีกว่า