2011-05-29 44 views

Respuesta

5

Puede eliminar entradas de forma segura al atravesar una tabla, pero no puede crear nuevas entradas, es decir, nuevas claves. Sin embargo, puedes modificar los valores de las entradas existentes. (Eliminando una entrada que es un caso especial de esa regla.)

4

No puede llegar allí desde aquí. Al menos no directamente ...

Como lhf said puede modificar o eliminar entradas al atravesar una tabla pero no puede agregarlas. Los resultados son ... indefinidos. (Lea: ramifique en hiperespacio o equivalente para todos los propósitos prácticos.)

Si insiste en poder agregar entradas, tendrá que clonar su tabla y usar una copia para la iteración y la otra para realizar un seguimiento de tus inserciones y eliminaciones Si esto no coincide con sus requisitos, en su lugar tendrá que hacer algo como esto:

  1. Haga una tabla vacía para agregar tablas.
  2. Comience a iterar sobre su tabla principal.
  3. A medida que encuentre las entradas que desea modificar, modifíquelas en su lugar. (Esto está permitido.)
  4. A medida que encuentre las entradas que desea eliminar, elimínelas en contexto. (Esto está permitido.)
  5. A medida que encuentre las entradas que desea agregar, agréguelas a la otra tabla que comenzó vacía.
  6. Cuando termine su iteración, combine la tabla de adición en la tabla principal.
  7. Lather. Enjuague. Repetir.

Existen otros patrones similares con reglas ligeramente diferentes que puede emplear. Por ejemplo, entre los pasos 5 & 6 es posible que desee insertar una llamada recursiva en el código para caminar de la tabla para las entradas agregadas de la tabla antes de la fusión, etc. También deberá realizar un seguimiento de posibles eliminaciones tanto en la tabla principal como en la tabla de adiciones si eso es una posible interacción.

Cuestiones relacionadas