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
C-/C++-Quelltext |
|
1 |
for(i=IndianerLP.begin();i!=IndianerLP.end();i++) |
C-/C++-Quelltext |
|
1 |
for(i=IndianerLP.begin();i<IndianerLP.end();i++) |
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 61 62 63 64 65 66 67 68 69 |
#include <iostream> #include <list>//nötig für Liste using namespace std; class cIndianer { public: cIndianer(){cout<<"Konstruktor\n";} ~cIndianer(){cout<<"Dekonstruktor\n";} void ausbilden(); void zeigen(); void löschen(); private: list<int> IndianerLP;//Liste wird erstellt list<int>:: iterator i;//Iterator wird erstellt }; void cIndianer::ausbilden() { int Anzahl=0; cout<<"Wie viele Indianer moechten sie Ausbilden?\n"; cin>>Anzahl; for (int i=0;i<Anzahl;i++) { IndianerLP.push_back (50);//Jedem Indianer werden 50LP zugewiesen } } void cIndianer::zeigen() { int zähler=1; for(i=IndianerLP.begin();i!=IndianerLP.end();i++)//Liste wird durchlaufen { cout<<zähler<<". Indianer: "<<*i<<endl;//Liste wird ausgegeben zähler++; } } void cIndianer::löschen() { /*for(i=IndianerLP.begin();i!=IndianerLP.end();++i) { delete (*i); (*i)=NULL; }*///<--Verursacht Fehler ?! IndianerLP.clear(); } int main() { cIndianer Spieler; Spieler.ausbilden(); Spieler.zeigen(); Spieler.löschen(); getchar (); getchar (); return 0; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
struct foo { void bar (){} int* get(){return &n;} private: int n; }; int main () { foo f; foo* pf = &f; (*pf).bar (); // pf wird dereferenziert. Man hat also ein Objekt vom Typ foo und da rufst du eine Funktion auf std::cout << *pf->get() << std::endl; // hier wird zuerst pf->get() ausgeführt, was ein Zeiger auf einen int ist, welchen du dann derefenzierst und ausgibst. } |
Community-Fossil
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »SaRu« (07.09.2010, 13:59)
Siehe mein Post: Der Zeiger muss sich erst über die Liste hangeln um bis zu der Stelle zu kommen, an der D eingefügt werden soll. Bei einer kleinen Liste macht es kaum einen Unterschied, aber wenn Du Hunderte oder gar Tausende Objekte in Deiner Liste hast, dann kann es ein Performance Problem geben (Bottleneck).Fall 3)
Ich schiebe D zwischen A und B in die Liste: D wird irgendwo im Speicher an eine freie Stelle geschrieben und ein Pointer zu Element B wird in D gespeichert. Der Pointer in A wird von der Adresse von B in die Adresse von D geändert. A,B,C bleiben wo sie sind: A->D->B->C
Wenn ich Heiko Kalista jetzt richtig verstanden habe, sind die ersten beiden zu bevorzugen, da sie schneller sind als die 3. Möglichkeit. Allerdings sehe ich den Unterschied nur darin, dass bei 3) eine weitere Variable geändert werden muss (Pointer in A), was eigentlich ni
Siehe mein Post: Der Zeiger muss sich erst über die Liste hangeln um bis zu der Stelle zu kommen, an der D eingefügt werden soll. Bei einer kleinen Liste macht es kaum einen Unterschied, aber wenn Du Hunderte oder gar Tausende Objekte in Deiner Liste hast, dann kann es ein Performance Problem geben (Bottleneck).
Hab ich eine Liste mit A->B->C->D->E->F->H->J und möchte nach F ein G einfügen, dann muss ich bei A anfangen über B, C, D, E und F gehen um zu sehen das ich die Pointer von F und H verändern muss.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
iterator insert(iterator pos, const_reference value) { list_node* node = new list_node(value, pos.node->prev, pos.node); pos.node->prev->next = node; pos.node->prev = node; return iterator(node); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jokester« (07.09.2010, 17:37)
Werbeanzeige