Saya mencari struktur data yang akan mendorong keluar elemen terlama / terakhir jika elemen baru dimasukkan. Sebagai contoh, biarkan D
mewakili struktur. D
berisi 3 elemen dari Number
D
nilai default tipe akan diinisialisasi ke 1, 2
dan 3
.
Jika a Number
yang berisi nilai 5
dimasukkan ke dalam D
, 3
akan didorong keluar, sementara 1
dan 2
digeser ke kanan.
Hal pertama yang terlintas dalam pikiran adalah array, tetapi definisi tersebut tidak termasuk perilaku mendorong.
data-structures
arrays
queues
Greg M.
sumber
sumber
void push_replace(T val) { pop(); push(val); }
.T push_replace(T val) { T old = pop(); push(val); return old; }
pop()
tidak mengembalikan apa pun karena masalah dengan stack unwinding dalam kasus pengecualian menyalin objek yang kompleks, jadi Anda seharusnya menggunakannyafront()
sebelum jika Anda membutuhkannya sebelum membuang. Tapi tentu saja, jika Anda tidak peduli tentang pengecualian, jalan Anda bisa lebih baik.Jawaban:
Antrian ukuran tetap sering diterapkan menggunakan apa yang oleh beberapa orang disebut bundar buffer . Jika Anda menghapus perlindungan agar tidak penuh, Anda mendapatkan perilaku yang diinginkan.
Tentu saja, tidak ada dorongan yang sebenarnya akan terjadi dalam array - itu akan terlalu mahal - tetapi akan terlihat seperti itu dari luar.
sumber