Vì các hoạt động duy nhất cần thiết để một vùng chứa được sử dụng trong một ngăn xếp là:
- trở lại()
- push_back ()
- pop_back ()
Tại sao vùng chứa mặc định cho nó là deque thay vì vector?
Không phân bổ lại deque cung cấp một bộ đệm các phần tử trước front () để push_front () là một hoạt động hiệu quả? Có phải những phần tử này không bị lãng phí vì chúng sẽ không bao giờ được sử dụng trong bối cảnh ngăn xếp không?
Nếu không có chi phí cho việc sử dụng deque theo cách này thay vì một vectơ, tại sao mặc định cho priority_queue lại là một vectơ không phải là một deque? (priority_queue yêu cầu front (), push_back () và pop_back () - về cơ bản giống như đối với ngăn xếp)
Cập nhật dựa trên các câu trả lời bên dưới:
Có vẻ như cách deque thường được thực hiện là một mảng kích thước thay đổi của các mảng kích thước cố định. Điều này làm cho việc phát triển nhanh hơn so với một vectơ (yêu cầu phân bổ lại và sao chép), vì vậy đối với một cái gì đó như ngăn xếp chỉ là thêm và xóa các phần tử, deque có thể là lựa chọn tốt hơn.
priority_queue yêu cầu lập chỉ mục nhiều, vì mọi thao tác xóa và chèn đều yêu cầu bạn chạy pop_heap () hoặc push_heap (). Điều này có thể làm cho vectơ trở thành lựa chọn tốt hơn ở đó vì dù sao việc thêm một phần tử vẫn được phân bổ không đổi.