Karena satu-satunya operasi yang diperlukan agar container digunakan dalam stack adalah:
- kembali()
- push_back ()
- pop_back ()
Mengapa penampung default untuknya adalah deque, bukan vektor?
Jangan deque realokasi memberikan buffer dari elemen sebelum front () sehingga push_front () adalah operasi yang efisien? Bukankah elemen-elemen ini terbuang percuma karena mereka tidak akan pernah digunakan dalam konteks tumpukan?
Jika tidak ada overhead untuk menggunakan deque dengan cara ini dan bukan vektor, mengapa default untuk priority_queue vektor bukan deque juga? (priority_queue membutuhkan front (), push_back (), dan pop_back () - pada dasarnya sama dengan stack)
Diperbarui berdasarkan Jawaban di bawah ini:
Tampaknya cara deque biasanya diimplementasikan adalah larik ukuran variabel dari larik ukuran tetap. Ini membuat pertumbuhan lebih cepat daripada vektor (yang membutuhkan realokasi dan penyalinan), jadi untuk sesuatu seperti tumpukan yang semuanya tentang menambah dan menghapus elemen, deque kemungkinan merupakan pilihan yang lebih baik.
priority_queue sangat membutuhkan pengindeksan, karena setiap penghapusan dan penyisipan mengharuskan Anda menjalankan pop_heap () atau push_heap (). Ini mungkin membuat vektor menjadi pilihan yang lebih baik di sana karena penambahan elemen masih tetap diamortisasi.