Tất cả tài liệu tôi có thể tìm thấy trên các thùng chứa STL (cả hàng đợi và danh sách) đều nói rằng đối với bất kỳ chức năng xóa nào, hàm hủy của đối tượng đã xóa được gọi. Điều này có nghĩa rằng tôi không thể sử dụng std :: queue bất cứ lúc nào tôi muốn một hàng đợi đơn giản chỉ là một danh sách các đối tượng cần một số thao tác được thực hiện trên chúng.Xóa khỏi STL std :: xếp hàng mà không phá hủy đối tượng đã xóa?
Tôi muốn có thể thêm các đối tượng vào hàng đợi khi chúng đang chờ xếp hàng để tôi làm điều gì đó với chúng. Sau đó, tôi muốn loại bỏ chúng khỏi nó khi tôi đã hoàn thành với họ, mà không phá hủy các đối tượng trong câu hỏi. Điều này dường như không thể thực hiện được từ tài liệu tôi đã đọc. Tôi có đang đọc sai tài liệu không? Có một loại hàng đợi nào đó trong STL không phải là "hàng đợi" cơ bản không gọi hàm hủy của đối tượng đã xóa trong lệnh gọi pop_front không?
Chỉnh sửa để làm rõ: Trong trường hợp của tôi, tôi đang sử dụng danh sách các con trỏ. Một cái gì đó như thế này:
dbObject *someObject;
queue<dbObject *> inputQueue;
inputQueue.push_back(someObject);
...
dbObject *objectWithInput = inputQueue.front();
//handle object's input...
inputQueue.pop_front(); // Remove from queue... destroyed now?
nếu bạn đang lưu trữ con trỏ bên trong hàng đợi, việc xóa chúng sẽ không gọi hàm hủy. –
Một câu hỏi tương tự: http://stackoverflow.com/questions/1525535/delete-all-items-from-a-c-stdvector –