Esta pregunta es sobre una estructura de datos en la que pensé. Es una matriz dinámica, como std :: vector <> en C++, excepto que el algoritmo de eliminación es diferente.Arreglo dinámico con O (1) eliminación de cualquier elemento
En una matriz dinámica normal, cuando se elimina un elemento, todos los elementos restantes deben desplazarse hacia abajo, que es O (n), a menos que sea el último elemento, que será O (1).
En este caso, si se elimina algún elemento, se reemplaza por el último elemento. Esto, por supuesto, pierde el orden de los elementos. Pero ahora la eliminación de cualquier elemento es un tiempo constante.
Una lista tendrá los mismos tiempos de eliminación, pero esta estructura tiene acceso aleatorio. La única advertencia es que no sabes a qué estás accediendo, ya que el orden puede ser complicado, así que de todos modos el uso es de acceso aleatorio. Además, una lista no confundirá ningún puntero/iterador con elementos.
Así que, esta estructura parece bastante inútil a excepción de la tarea muy específica de caminar estrictamente a través de los elementos y tal vez eliminarlos en el camino. Una lista puede hacer lo mismo, pero esto tiene un mejor rendimiento de caché.
Entonces, ¿esta estructura extraña/inútil tiene un nombre, y tiene algún uso? ¿O solo una pequeña tormenta cerebral?
Normalmente (IMO), cuando necesitamos acceso aleatorio también necesitamos el pedido. Una idea muy interesante, sin embargo. –