En términos abstractos, un tubo es un contenedor de estilo de flujo/FIFO con una lectura destructiva. Tiene un método read()
que copia trozos de datos a la vez y funciones como get
y put
para bytes individuales. Sin embargo, cuando regresan read
o get
, los datos que se copiaron de la tubería se eliminan del búfer interno de la tubería, a diferencia de un archivo o cualquier otro tipo de contenedor.¿Hay una clase C++ STL que funcione como una tubería?
La mayoría (¿todos?) De los contenedores STL no proporcionan un read()
similar en un comando de búfer. ¿Hay un tipo de contenedor fifo con un miembro pop_many()
?
stringstream
es lo más parecido que puedo pensar, ya que mantiene un puntero de lectura interno y las lecturas futuras se bloquearán hasta que la secuencia se llene nuevamente. El contenedor está vacío desde el punto de vista de la API, pero los datos consumidos deberían ser recogidos de forma manual.
¿Hay un contenedor o clase de flujo equivalente en C++ que hace esto, o es una cuestión de rodar por cuenta propia (como en el ejemplo de secuencia de cadenas)?
¿Quizás una cola? – Gir
Podría poner un círculo alrededor de queue.pop(), pero no es eficiente. Quiero poder eliminar grandes cantidades de datos y la cola/fifo cambia el tamaño automáticamente después de eliminarlos. –
¿Para qué lo necesitas? –