tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Onkel Schuppig
  • 1 Beitrag von vfl_freak
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
988
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kaiser206 Kaiser206 ist offline Mitglied Gold
    Registriert seit
    Jun 2005
    Beiträge
    175
    Hallo,
    ich habe viel über die im Titel stehenden Elemente gelesen, doch ich blicke trotzdem nicht durch, welches nun für was geeignet ist. Immer wenn ich sie einsetze kommt es zum Absturz oder die Programme lassen sich nichtmal compilieren.

    Ich benötige folgendes:
    -Eine Objekt, dass unbegrenzt viele Elemente abspeichert.
    -Während des Programms neue Elemente anfügt.
    -Den einfachen gezielten Zugriff auf einzelne Elemente ermöglicht.
    -Das löschen von Elementen an beliebiger Stelle ermöglicht.

    Bisher habe ich dafür den vector verwendet, doch er erscheint mir dafür irgendwie ungeeignet. Kann mir da jemand helfen?

    MFG
    Kaiser206
     
    ---

  2. #2
    Onkel Schuppig Onkel Schuppig ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    191
    Hallo,
    alle Klassen eignen sich für beliebige Mengen Elemente. Jede hat jedoch so ihre Eigenheiten.
    Nehmen wir mal vector: Er bietet den schnellstmöglichen Zugriff über Indices, ist aber langsam, wenn neue Elemente zugefügt oder gelöscht werden. Der Grund ist, dass ein vector immer an 1 Stück im Speicher untergebracht wird. Reicht der vorgesehene Speicher nicht aus, wird ein größerer Speicher angefordert und der komplette Inhalt des alten Speichers in den neuen kopiert. Deshalb kann ein einzelnes push_back() ggf. zu langen Laufzeiten führen. Günstig ist, wenn man vorher schon weiß, wie groß der Vektor werden wird. Dann kann mit reserve() Speicher in beliebiger Menge vor-reserviert werden.
    lists und deques sind besser für häufiges Löschen/Sortieren/Hinzufügen, da dort alles über Zeiger läuft. Aber der Zugriff ist hier für "Elemente mittendrin" langsam, da erst eine Zeigerliste durchgehangelt werden muss, um das x-te Element zu finden.
    Kaiser206 bedankt sich. 
    Grüße OS

  3. #3
    RuFFnEcK RuFFnEcK ist offline Mitglied Gold
    Registriert seit
    Jan 2004
    Beiträge
    203
    Hallöchen,

    mein Vorredner hat vollkommen recht.
    Die Frage ist wie oft du Objekte löschen bzw. hinzufügen musst und wie wichtig der direkte Zugriff auf Objekte sind?!

    std::list erfüllt alle Punkte optimal, nur halt nicht den Zugriff übern index, so dass du gezwungen bist mit nem iterator dadurch zu laufen...

    Lieben Gruß
    RuFF
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    schau mal hier, vlt. hilft Dir das weiter :
    http://www.namespace-cpp.de/C++/kennen/stl.htm

    Gruß
    Klaus
    Kaiser206 bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

Ähnliche Themen

  1. [C] struct list vs. std::list?
    Von posi90 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 23.11.10, 19:29
  2. Antworten: 4
    Letzter Beitrag: 15.10.07, 21:52
  3. Vector in Vector geht nicht
    Von TimN im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 10.05.07, 19:19
  4. eigenes JTable Modell mit Übernahme des Vector Vector Konstruktors
    Von Malte Roessner im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 8
    Letzter Beitrag: 02.06.06, 12:31
  5. was für ein TFT ist der richtige ?
    Von zirag im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 02.03.04, 20:22