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
Zitat von »"rewb0rn"«
benutz die stl
Als Übung für den Umgang mit Zeigern ist es ganz nützlich. In einer realen Anwendung sollte man dann aber schon die STL nehmen.Zitat von »"David_pb"«
Genau, ich frag mich sowiso oft warum alle ihre eigenen Containerklassen schreiben. Die STL liefert doch tolle Klassen.
Administrator
Zitat
ich check das nicht so ganz.. wie soll ich ein element rauspflücken, ohne zu wissen wo es im moment ist?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
//pseudocode elementstyp elementanstelle(unsigned short suchpos) { if (position >= suchpos) resetliste(); while (position != suchpos) { position++; aktuellerzeiger = aktuellerzeiger->next; } return aktuellerzeiger->element; } |
Zitat
Folgendes sind die typischen Iterator-Operationen:
* Erzeugen eines Iterators auf den (wie auch immer definierten) "Anfang" (begin()),
* Erzeugen eines Iterators auf das "Ende" (end(), genauer: auf das "Element hinter dem eigentlich letzten")
* "Vorwärts"-Verschieben des Iterators um eine Position (++)
* "Rückwärts"-Verschieben (--)
* Zugriff auf das zugeordnete Objekt (*, unär)
Zitat von »"rewb0rn"«
also iteratoren mal beiseite.
Zitat
ich check das nicht so ganz.. wie soll ich ein element rauspflücken, ohne zu wissen wo es im moment ist?
du weißt wo es ist. du machst nichts anderes als zu sagen: ich will das element an der stelle 5.
wenn du ein bestimmtes element suchst musst du dafür noch eine suchfunktion schreiben, dass dir dann die nr des elementes zurückgibt und performanterweise die liste anschließend nicht zurücksetzt.
also sagen wir du weißt wo es ist und es sit die stelle 5. dann machst du einfach:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 //pseudocode elementstyp elementanstelle(unsigned short suchpos) { if (position >= suchpos) resetliste(); while (position != suchpos) { position++; aktuellerzeiger = aktuellerzeiger->next; } return aktuellerzeiger->element; }
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
unsigned long x; if(PositionID >= (x = m_pPtrToLastElement->m_ID / 2)) { pDummy = m_pPtrToLastElement; while(pDummy->m_ID != PositionID) { pDummy = pDummy->m_pPrevElement; } // while(pDummy->m_ID != PositionID) Element *pAddElement = new Element; pAddElement->m_Value = 999; pDummy->m_pPrevElement->m_pNextElement = pAddElement; pAddElement->m_pPrevElement = pDummy->m_pPrevElement; pDummy->m_pPrevElement = pAddElement; pAddElement->m_pNextElement = pDummy; // Sort the list SortElements(); m_ElementCounter++; return ADDING_SUCCEEDED; } else { pDummy = m_pPtrToFirstElement; while(pDummy->m_ID != PositionID) { pDummy = pDummy->m_pNextElement; } // while(pDummy->m_ID != PositionID) Element *pAddElement = NULL; if(pDummy->m_ID == 0) { pAddElement = new Element; pAddElement->m_Value = 999; pAddElement->m_pNextElement = pDummy; pDummy->m_pPrevElement = pAddElement; m_pPtrToFirstElement = pAddElement; // Sort the list SortElements(); m_ElementCounter++; return ADDING_SUCCEEDED; } pAddElement = new Element; pAddElement->m_Value = 999; pDummy->m_pPrevElement->m_pNextElement = pAddElement; pAddElement->m_pPrevElement = pDummy->m_pPrevElement; pDummy->m_pPrevElement = pAddElement; pAddElement->m_pNextElement = pDummy; // Sort the list SortElements(); m_ElementCounter++; return ADDING_SUCCEEDED; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
if(PositionID >= (x = m_pPtrToLastElement->m_ID / 2)) { pDummy = m_pPtrToLastElement; // [...] } else { pDummy = m_pPtrToFirstElement; // [...] |
Zitat von »"$nooc"«
ähm.. soviel anders hab ich das nicht gemacht O_o
Zitat
ich hab nur bei den elementen noch ne ID hinzugefügt! also jedesmal wenn ich ein element egal wo reingebe, bekommt es die richtige ID .. das ist ja nicht viel anders wie das was du hier gepostet hast..
Zitat
das einzige was bei mir ist.. ich schau nach.. wenn ich 100 elemente hab, und ich will das element an der 75igsten stelle haben.. dann läuft die schleife vom letzten bis zum 75igsten element und fügt es ein! wenn ich es beim 25igsten element haben will, dann läuft die schleife vom ersten weg..
Werbeanzeige