Trong thuật ngữ trừu tượng, một đường ống là một thùng chứa kiểu luồng/FIFO với một đọc phá hoại. Nó có phương thức read()
sao chép các khối dữ liệu cùng một lúc và các chức năng như get
và put
cho các byte đơn. Khi read
hoặc get
trả về, dữ liệu được sao chép ra khỏi đường ống sẽ bị xóa khỏi bộ đệm trong của ống - không giống như tệp hoặc bất kỳ loại vùng chứa nào khác.Có một lớp C++ STL hoạt động giống như một đường ống không?
Hầu hết (tất cả?) Của các vùng chứa STL không cung cấp read()
tương tự trong lệnh đệm. Có một loại container nămo với một thành viên pop_many()
?
stringstream
là về điều gần nhất tôi có thể nghĩ đến vì nó duy trì một con trỏ đọc nội bộ và lần đọc trong tương lai sẽ chặn cho đến khi luồng đầy lại. Vùng chứa trống từ điểm API, nhưng dữ liệu được tiêu thụ sẽ phải là rác được thu thập thủ công.
Có một vùng chứa hoặc luồng luồng tương đương trong C++ thực hiện điều này hay là vấn đề của chính bạn (như trong ví dụ về chuỗi)?
có thể là hàng đợi? – Gir
Tôi có thể đặt một vòng quanh queue.pop(), nhưng nó không hiệu quả. Tôi muốn có thể xóa các khối dữ liệu lớn và hàng đợi/fifo sẽ tự động thay đổi kích thước sau khi tôi xóa chúng. –
Bạn cần nó để làm gì? –