Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

1

16.12.2006, 20:16

Element aus Array das mit new erzeugt wurde löschen

Hi,

weis jemand wie ich ein einzelnes element aus einem array das ich mit new erzeugt habe löschen kann? oder besser ist das überhaupt möglich?

Zum Beispiel:

C-/C++-Quelltext

1
2
3
CClass *pPointer;
pPointer = new CClass[30];
// ...


Wie kann ich jetzt zum beispiel das element mit der "nummer" 5 löschen?


mfg,

Faule Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

16.12.2006, 20:19

das geht nur indem du alles bis auf element 5 in ein um ein element kleineres array kopierst.

wenn du oft elemente löschen und hinzufügen willst, nimm eine liste ;)

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

16.12.2006, 21:03

Zitat von »"dot"«

das geht nur indem du alles bis auf element 5 in ein um ein element kleineres array kopierst.

wenn du oft elemente löschen und hinzufügen willst, nimm eine liste ;)


und was ist eine liste?

Falls das was mit der STL zu tun hat... sry damit kenn ich mich net aus... *dummgrins*^^


mfg,

Faule Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

16.12.2006, 21:51

eine liste ist eine datenstruktur...

sie STL stellt auch eine liste zu verfügung, aber ich hab das gefühl du solltest mal selber eine machen ;)

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

5

16.12.2006, 22:01

Zitat von »"dot"«

eine liste ist eine datenstruktur...

sie STL stellt auch eine liste zu verfügung, aber ich hab das gefühl du solltest mal selber eine machen ;)


Datenstruktur? also ich verwende da eine struktur... und mit dieser erzeuge ich meherere objekte(in einem array) und die sollen dann auch eine liste darstellen... aber ich glaube wir reden hier drann vorbei!

Also das was im Wiki steht sieht stark nach einer doppelt verkettenten liste aus...(sowas benutzt david in seiner engine für den speichermanager)... allerdings versteh ich net was das ist und wie man es verwendet... kannst du es vllt mal kurz erklären? sry hab den link noch net fertig gelesen...


mfg,

Faule Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

16.12.2006, 22:03

hast du den link von mir angeklickt!?
wenn ja, hast du ihn auch gelesen!?

"fundamentale datenstruktur" bedeutet genau das...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

16.12.2006, 22:09

Re: Element aus Array das mit new erzeugt wurde löschen

Zitat von »"Faule Socke"«

Hi,

weis jemand wie ich ein einzelnes element aus einem array das ich mit new erzeugt habe löschen kann? oder besser ist das überhaupt möglich?

Zum Beispiel:

C-/C++-Quelltext

1
2
3
CClass *pPointer;
pPointer = new CClass[30];
// ...


Wie kann ich jetzt zum beispiel das element mit der "nummer" 5 löschen?


mfg,

Faule Socke


Verwende einfach die STL Lösung:

C-/C++-Quelltext

1
std::list< CClass > deineListe;


Wenn dich verlinkte Listen interessieren und du gern selbst eine implementieren willst: Das Prinzip ist das jeder Listeneintrag einen Zeiger auf den nächsten (und evtl verherigen) Eintrag besitzt. So kann man z.B. sehr schnell Listeneinträge löschen, indem man nämlich einfach die Zeiger ändert.
Der Vorteil gegenüber normalen Arrays ist, das der Aufwand hierbei sehr viel weniger komplex ist.

grüße
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

8

16.12.2006, 22:23

Zitat von »"dot"«

hast du den link von mir angeklickt!?
wenn ja, hast du ihn auch gelesen!?


Ga logisch hab ich ihn angeklick! aber ich glaube du hast meinen beitrag net gelesen weil ich da geschrieben habe das ich ihn noch net ganz gelesen habe! bin jetzt bei den beiden grafiken die die listen erklären(hab leider net viel zeit sondern kann es nur bruchstückweise lesen)...

Trotzdem verstehe ich net was einem da bringe soll.. beispielsweise hat man einen zeiger auf eintrag 5 und will auf den wert im 7. eintrag zugreifen dann müsste man doch folgendes machen:

C-/C++-Quelltext

1
pList->pNext->pNext->Value;



mfg,

Faule Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

16.12.2006, 22:28

Zitat

Zuletzt bearbeitet von Faule Socke am 16. Dezember 2006, 22:04, insgesamt einmal bearbeitet


Zitat

BeitragVerfasst am: 16. Dezember 2006, 22:03


...



du hast vollkommen recht.
genau das ist der nachteil von listen.
der zugriff auf ein einzelnes element mitten in der liste ist langsamer.
währed ein array konstante zugriffszeit hat, hat eine liste O(n) (wenn n der index ist)...

dafür sind liste und array praktisch gleich schnell wenn es nur darum geht alle elemente zu durchlaufen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

16.12.2006, 22:32

Zitat von »"Faule Socke"«


Trotzdem verstehe ich net was einem da bringe soll..


Wer lesen kann ist klar im Vorteil... Einen der Vorteile von verlinkten Listen hab ich oben beschrieben. Ich wiederhole mich:

Zitat


So kann man z.B. sehr schnell Listeneinträge löschen, indem man nämlich einfach die Zeiger ändert.
@D13_Dreinig

Werbeanzeige