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

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

51

12.03.2007, 11:37

will mir das hier jemand erklären, sodass ich es verstehe? ^^
ich check das nicht so ganz.. wie soll ich ein element rauspflücken, ohne zu wissen wo es im moment ist? hä? ich check da jetzt gar nix ab ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

52

12.03.2007, 11:39

benutz die stl^^

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

53

12.03.2007, 11:41

Zitat von »"rewb0rn"«

benutz die stl^^


Genau, ich frag mich sowiso oft warum alle ihre eigenen Containerklassen schreiben. Die STL liefert doch tolle Klassen.
@D13_Dreinig

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

54

12.03.2007, 11:43

Zitat von »"David_pb"«

Genau, ich frag mich sowiso oft warum alle ihre eigenen Containerklassen schreiben. Die STL liefert doch tolle Klassen.
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.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

55

12.03.2007, 11:45

mir ist schon klar dass es das was ich mache schon gibt.. wie big_muff bereits gesagt hat: zu übungszwecken ist es recht praktisch

und ich mach das ja nur aus übungszwecken.. also wer will mir das mit den iteratoren erklären? :D
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

56

12.03.2007, 12:04

Der erklärt es dir sicher gern!

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

57

12.03.2007, 12:05

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;
}

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

58

12.03.2007, 12:14

ok.. also is ein iterator sowas wie ein pointer der zum beispiel auf das erste element zeigt, bzw. auf ein letztes oder wie?

das hab ich auf google gefunden:

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)
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

59

12.03.2007, 12:17

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;
}


ähm.. soviel anders hab ich das nicht gemacht O_o
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..

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;
    }


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..

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; 

        // [...]
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

60

12.03.2007, 12:41

Zitat von »"$nooc"«

ähm.. soviel anders hab ich das nicht gemacht O_o

Ich bin gerade auf der Arbeit und hab daher nicht die Muse alles hier zu lesen. Generell hab ich sowieso eine Abneigung gegen seitenweise geposteten Code^^

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..

also eine sortierte liste und die id ist das sortierkriterium? ist ok so

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..



genauso und nicht anders. wenn dein code nicht so funktioniert wie erwartet solltest du den debugger bemühen.

Werbeanzeige