Pregunta

Tengo un flujo de datos que quiero colocar en un contenedor. Este contenedor tendrá un tamaño fijo o estará restringido dinámicamente a un cierto tamaño en tiempo de ejecución. Este último puede ser preferible.

Cuando el contenedor esté lleno, los datos más antiguos se eliminarán.

Quiero mostrar estos datos con un wxVListBox porque necesito el control total de la pantalla. Sin embargo, hay un problema: las llamadas a OnDrawItem no son atómicas, lo que significa que una vez que el contenedor esté lleno, cada llamada al OnDrawItem accederá a los datos en movimiento, el resultado será un Visualización no contigua con elementos faltantes.

Esto es cierto con cualquier contenedor con indexación nativa similar a una matriz, son requeridos por OnDrawItem .

Puedo simular una indexación similar a una matriz en un std :: map utilizando la indexación de iteradores, si la clave es un entero secuencial, todos los elementos se ordenarán y el mapa se puede podar con bastante facilidad. Pero eso parece un hack ineficiente.

¿Cómo puedo resolver esto? ¿Alguna otra idea o contenedor que no haya pensado?

¿Fue útil?

Solución

El mejor enfoque parece ser administrar perezosamente el estado del contenedor completo dentro de OnDrawBackground . De esa manera, la propia interfaz de usuario garantiza que los datos permanezcan estáticos en las llamadas subsiguientes a OnDrawItem , utilizando un deque como contenedor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top