Cuando se agrega un elemento utilizando los corchetes y puntero de la lista como se ha visto anteriormente, el puntero no se incrementa Hay que incrementar el puntero de un número de veces hasta que apunte al elemento añadido, antes de poder utilizarlo para comprobar si el valor devuelto es NULL. El siguiente código ilustra esto para una matriz dinámica int. #include using namespace std; int main () {int * listPtr = new int [5]; listPtr [0] = 0; listPtr [1] = 1; listPtr [2] = 2; listPtr [3] = 3; listPtr [4] = 4; //Añadir nuevo elemento.
listPtr [5] = 5; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; ++ listPtr; si (listPtr == NULL) {cout} --listPtr; --listPtr; --listPtr; --listPtr; --listPtr; return 0; } Hay que disminuir el puntero, el mismo número de veces que se incrementa ella. Si no decremento, el índice en los corchetes para el puntero ya no reflejar su valor previsto (original); bajo esa condición, el puntero con el índice no devolverá el valor correcto. Lea el código de seguridad si usted no lo ha hecho (probarlo).
Todavía hay un problema: Suponga que el nuevo elemento no se podría añadir, ya que su puntero apuntaría a una posición de memoria que ya se ha tomado por algún otro objeto desconocido para nosotros. En ese caso, cuando se incrementa el puntero de la cantidad de veces que sería aún apuntar a una dirección que existe, que no es NULL. En este caso, la verificación si con NULL nos dirá que existe una dirección, pero la dirección no tendría nuestro elemento (y su valor). Esta es una conclusión equivocada.
Una mejor prueba es el siguiente: if (* listPtr = 5!) {Cout} En la condición si, que eliminar la referencia al puntero a la posición de memoria del objeto añadido supuesto y vemos si el valor devuelto es el mismo que el valor enviamos por el elemento añadido. En el programa anterior el valor que enviamos fue 5. Iterator Un puntero es la dirección de un objeto en la memoria. Vimos un problema anterior que al mover el puntero de la matriz (nombre de la mat