(überflüssige) Demo



  • Hallo,
    also ich habe keine Ahnung von Spieleprogrammierung, aber eins kann ich euch garantieren: Sofern es sich bei Vektor um einen std::vector handelt, ist dessen op[] keinesfalls langsamer als der Zugriff auf das Folgeelemt einer Liste.

    Auch ist es *garantiert* (zwar erst durch einen Defect Report, aber immerhin), dass std::vector seine Elemente *am Stück* speichert und das der op[] eine constant-time-operation ist (ein simpler Indexzugriff, wie beim "normalen" Array auch).

    Zwischen Vektoren und Listen zu entscheiden, macht Sinn bei Einfügeoperationen, bei Random-Access-Operationen, bei der Betrachtung der Gültigkeit von Referenz bzw. Iteratoren in den Container, beim Sortieren und wenn es um Exceptionsicherheit und Transaktionssemantik geht (irgendwas habe ich bestimmt wieder vergessen).

    Nicht aber, beim einfachen Durchlaufen.

    So, jetzt könnt ihr euch weiter die Köppe einschlagen 🙂



  • Danke erstmal für die Aufklärung

    bei Random-Access-Operationen

    Nunja, der []op ist doch random access, oder ?
    Also folgerte ich logischerweise das ein Zugriff damit langsamer ist als der lineare Zugriff in der Liste.

    Wenn dem nun nicht so ist, nunja ...

    Trotzdem ist die Liste in diesem Beispiel intuitiver ! Aber Geschmackssache ...

    Mal wieder was gelernt



  • Nunja, der []op ist doch random access, oder ?

    Richtig. In der Regel schon. Werden random-access-Zugriffe benötigt, eignet sich ein Vektor besser, da ein solcher Zugriff bei diesem Container in konstanter Zeit abläuft. Bei einer Liste aber in O(n). Ist also dort abhängig von der Anzahl der Elemente in der Liste.

    Also folgerte ich logischerweise das ein Zugriff damit langsamer ist als der lineare Zugriff in der Liste

    Nein. Der Zugriff auf eine beliebige Stelle in einem Vektor ist *schneller* als bei einer Liste. Der schrittweise Zugriff auf jedes einzelne Element dürfte für Vektoren und Listen aber gleich schnell sein. Im zweifelsfall mit einem leicht besseren Ergebnis für Vektor.

    Trotzdem ist die Liste in diesem Beispiel intuitiver !

    Ich habe mir das Beispiel nicht angeschaut. Es kann auch sein, dass die Liste nicht nur intuitiver sonder auch performanter ist. Das kann ich nicht beurteilen.
    Allein die beiden Schleifen lassen darüber aber keine Aussage zu.

    Ich würde allerdings auch beim Vektor die Iteratorschreibweise verwenden.

    [ Dieser Beitrag wurde am 25.01.2003 um 01:00 Uhr von HumeSikkins editiert. ]



  • Original erstellt von HumeSikkins:
    So, jetzt könnt ihr euch weiter die Köppe einschlagen 🙂

    Habe ich nicht vor. Warte nur auf die Vorschläge, die zu Threadbeginn angekündigt wurden ;).



  • So, hab nun auch Source für Linux hochgeladen, hoffe mal der funzt. (Nochmal danke an nman für den Aufwand!)

    Bye, TGGC



  • Evtl. hier noch wer?
    2D Renderer



  • Hi !

    Ich kann den Sourcecode nicht compilen (gcc 3.2.1)
    Hier der Output :

    [code]
    jojo@jojo ~/ZweiD_linux/ZweiD $ make;bell
    g++ -o ZweiD -Wall -O4 ZweiD.cpp stdafx.cpp Renderer/CCircle.cpp Renderer/CFastCircle.cpp Renderer/CFastRender.cpp Renderer/CIObject.cpp Renderer/CLine.cpp Renderer/CObjectList.cpp Renderer/CRender.cpp Renderer/CRenderTarget.cpp Util/CFWraw.cpp Util/CFWtga.cpp
    Renderer/CCircle.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CFastCircle.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CFastRender.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CIObject.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CLine.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CObjectList.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CRender.cpp:18:7: warning: extra tokens at end of #else directive
    Renderer/CRenderTarget.cpp:17:7: warning: extra tokens at end of #else directive
    Renderer/CRenderTarget.h: In constructor CRenderTarget::CRenderTarget(int, int, float)': Renderer/CRenderTarget.h:60: warning: member initializers forint
    CRenderTarget::m_siWidth'
    Renderer/CRenderTarget.h:59: warning: and int CRenderTarget::m_siHeight' Renderer/CRenderTarget.cpp:36: warning: will be re-ordered to match declaration order Util/CFWraw.cpp:16:20: stdafx.h: Datei oder Verzeichnis nicht gefunden In file included from Util/CFWraw.cpp:18: Util/CFWraw.h:30: parse error before{' token
    Util/CFWraw.cpp:28: `string' undeclared in namespace `std'
    Util/CFWraw.cpp:28: parse error before ,' token Util/CFWraw.cpp:29: invalid use of undefined typeclass CFWraw'
    Util/CFWraw.h:29: forward declaration of class CFWraw' Util/CFWraw.cpp: In member functionbool CFWraw::Save(...)':
    Util/CFWraw.cpp:30: strName' undeclared (first use this function) Util/CFWraw.cpp:30: (Each undeclared identifier is reported only once for each function it appears in.) Util/CFWraw.cpp:32: \ofstream' undeclared in namespace `std'
    Util/CFWraw.cpp:32: parse error before (' token Util/CFWraw.cpp:34:ofs' undeclared (first use this function)
    Util/CFWraw.cpp:43: `prt' undeclared (first use this function)
    Util/CFWtga.cpp:18:7: warning: extra tokens at end of #else directive
    make: *** [ZweiD] Fehler 1[/code]



  • Also bei mir compiled die Version auch nicht, bist Du sicher dass das die Version ist die ich dir geschickt habe, TGGC?

    Ich kann Dir gegebenfalls meinen letzten Port schicken oder irgendwo hochladen, der funktioniert ganz sicher.



  • Original erstellt von nman:
    Also bei mir compiled die Version auch nicht, bist Du sicher dass das die Version ist die ich dir geschickt habe, TGGC?

    Du hattest nichts geschickt(!?), das hatte ich von der Adresse oben runtergeladen. Ausprobieren konnte ich es leider nicht, wusste daher nicht, ob es geht.



  • Original erstellt von TGGC:
    Ihr seid alle kläglich und dumm.

    Das musst Du gerade sagen, Du arroganter selbstverliebter Kerl!!!!!



  • Äh ich meinte ja auch "hochgeladen" - das ist aber sicher nicht die letzte Version, denn diese lässt sich bei mir ohne irgendwelche Probleme kompilieren und ausführen!

    Lade jetzt mal runter - ich hab Headhunter zuliebe sogar noch ein halbwegs vernünftiges Makefile dazugepackt... 😉



  • Ok, werde es bei Gelegenheit uppen, heut is schon zu spät ;).



  • Passt, sag mir halt wenn Du es hast damit ich es dann wieder vom sf-Server runternehmen kann! 🙂



  • Original erstellt von nman:
    Passt, sag mir halt wenn Du es hast damit ich es dann wieder vom sf-Server runternehmen kann! 🙂

    Ja haben tat ich es ja schon gestern, aber eben erst jetzt neu hochgeladen. Danke nochmal!



  • OK, dann lösche ich es jetzt mal vom SF-Server...
    Bitte! 🙂


Anmelden zum Antworten