Quiero almacenar algunos valores, pero solo almacenar tres a la vez. Si se almacenara un cuarto, el valor más antiguo de la estructura se eliminaría para hacer espacio.

Por ejemplo:

const unsigned int BUFFER = 3; // maximum size
SomeType s(BUFFER);
s.add(1); // s is now 1 --> NULL --> NULL
s.add(3); // s is now 3 --> 1 --> NULL
s.add(6); // s is now 6 --> 3 --> 1
s.add(4); // s is now 4 --> 6 --> 3 (1 was removed)

¿Hay una estructura de datos incorporada en C ++ 03 o debo crear la mía propia?

0
gator 18 dic. 2019 a las 21:12

2 respuestas

La mejor respuesta

¿Existe una estructura de datos integrada en C ++ 03?

Una estructura de datos que sería apropiada para lo que describe es un búfer circular.

No existe tal contenedor en la biblioteca estándar.

¿O estoy obligada a hacer la mía?

Puedes hacer el tuyo. Se puede implementar un búfer circular encima de un contenedor de secuencia. O, como siempre, puede usar una biblioteca preexistente.

1
eerorika 18 dic. 2019 a las 18:43

En cuanto a las estructuras integradas para C ++, puede usar std::queue , aunque deberá incluir un control de tamaño, ya que no hay una forma integrada de limitarlo a 3.

Sin embargo, esto sería bastante simple si simplemente verifica el tamaño de la cola mientras empuja un elemento a la cola FIFO. Si la cola ya está en size==3, llame a la función pop para eliminar el elemento en la parte superior de la lista y luego push el nuevo elemento en la cola.

2
lukehod 18 dic. 2019 a las 18:26