2016-10-11 3 views
0

Sagen wir, ich möchte nicht Vektor verwenden und dynamisches Array (nur ein Lernziel). Von diesem dynamischen Array, das ich zugewiesen habe, möchte ich einen bestimmten Index löschen.So löschen Sie den spezifischen Index des dynamischen Arrays?

Wenn ich dies versuche, bekomme ich SIGSEGV, Segmentierung Fehler.

Wie lösche ich spezifischen Index (sagen wir Index 3, ich kenne seinen zusammenhängenden Speicher und es wird Loch, aber nur für Lernzwecke) wie ich versuche, oben richtig zu tun und warum bekomme ich Segmentierung Fehler, wenn dies ist meine Erinnerung?

+1

_dies ist mein Gedächtnis_ Dies ist in den meisten Fällen eine Erinnerung, die Ihnen der Speichermanager gnädig und vorübergehend gewährt. – Gasper

+0

* Sagen wir, ich möchte nicht Vektor verwenden und dynamisches Array (nur ein Lernzweck). * - Ein Vektor tut nichts Magisches. Was auch immer Vektor in der Mitte zu löschen tut, müssen Sie das gleiche tun. – PaulMcKenzie

Antwort

6

Sie können ein Element eines Arrays nicht löschen. Sie können nur löschen, was Sie neu erstellt haben. Um ein Element aus einem Array zu entfernen, kopieren Sie die höheren Elemente um einen Slot nach unten.

+0

"Sie können nur löschen, was Sie new'ed" Grundsätzlich habe ich nicht neu & Array [3], deshalb kann ich es nicht löschen? Aber ich neu Array, so dass ich Array richtig löschen kann? Macht Sinn – pokche

+1

@pokche - genau. 'delete' immer und nur mit' new'. –

3

Sie können nicht. Das Array wird als fortlaufender Speicherort gespeichert. Sie können nicht dazwischen löschen.

+0

Vielen Dank, dass Sie darauf hingewiesen haben. – learner

2

Sie müssten ein Array von Zeigern haben, um delete ein einzelnes Element Ihres Arrays zu haben.

Sie können alle folgenden Elemente um eine Stelle zurückverlagern, aber eine Neuzuweisung von new Ed-Speicher ist mit den Standardwerkzeugen nicht möglich.

Oder Sie können ein neues Array zuweisen und alle gewünschten Elemente kopieren.

Aber der einfachste Weg ist einfach std::vector und std::vector::erase zu verwenden.

Verwandte Themen