julia123 Geschrieben 7. Januar 2010 Geschrieben 7. Januar 2010 Hallo allerseits, ich bin noch Programmieranfängerin und hab ein (vermutlich) einfaches Problem. Ich möchste aus einem Array z.B. array[3]={1,2,3} den wert 2 löschen. Also array[1]=1; array[2]= "hier soll leer sein", array[3]=3. Hab gegoogelt und bin darauf gestoßen das man array[2]=NULL schreiben kann, aber löscht das einen Eintrag wirklich oder wird der dann nur durch 0 ersetzt? Schonmal danke im vorraus. Grüße, Julia Zitieren
Bubble Geschrieben 7. Januar 2010 Geschrieben 7. Januar 2010 Erstmal beginnt die Nummerierung von Array-Elementen mit der 0. Folglich hat der 2. Eintrag den Index 1. Einem Array-Eintrag die NULL-Pointer-Konstante zuzuweisen, sofern der Typ der Array-Elemente dies überhaupt zulässt, bringt Dich nicht weiter. Dadurch verschwindet kein Eintrag, sondern nur der Inhalt wird verändert. Wenn häufig Elemente einer Liste mittendrin gelöscht oder hinzugefügt werden sollen, sind Arrays ohnehin keine optimale Wahl. Zitieren
julia123 Geschrieben 7. Januar 2010 Autor Geschrieben 7. Januar 2010 Danke für die Antwort. Gibt es nun aber "leere" felder in einem array, kann man einen wert wirklich löschen? Und was wäre die Alternative zu arrays? Zitieren
Klotzkopp Geschrieben 7. Januar 2010 Geschrieben 7. Januar 2010 Gibt es nun aber "leere" felder in einem array, kann man einen wert wirklich löschen?Nicht im allgemeinen Fall. Falls du in deinem Array Zeiger hast, kannst du Nullzeiger verwenden, um leere Felder zu kennzeichnen. Ansonsten haben Variablen in C und C++ immer einen Wert, es sei denn, du selbst interpretierst einen bestimmten Wert als "leer". Dann darf dieser Wert aber nicht als gültiger, nicht-leerer Wert auftauchen. Wenn dein Array dynamisch angelegt ist (malloc oder new), kannst du Elemente entfernen, indem du die verbliebenen Werte in ein neues Array mit verringerter Größe umkopierst. Und was wäre die Alternative zu arrays?Falls du C++ benutzt, bietet die Standardbibliothek mehrere Containerklassen, die alle die Operation des Entfernens einzelner Elemente unterstützen. Die Unterschiede zwischen den Containern liegen in den Zeitkomplexitäten der einzelnen Operationen. Wenn du beispielweise häufig einzelne Elemente irgendwo in der Mitte einfügen oder entfernen musst, würde sich std::list anbieten. Zugriff über Indexoperator geht allerdings bei std::list nicht. Wenn du C benutzt, kannst du solche Datenstrukturen natürlich auch benutzen, du müsstest sie nur selbst implementieren. Zitieren
julia123 Geschrieben 7. Januar 2010 Autor Geschrieben 7. Januar 2010 danke für die antwort, hilft mir weiter :-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.