1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

problem mit stl map

    • Frage
  • bimbo
  • 20. April 2004 um 19:11
  • Unerledigt
  • bimbo
    15
    bimbo
    Mitglied
    Reaktionen
    15
    Punkte
    2.320
    Beiträge
    390
    • 20. April 2004 um 19:11
    • #1

    ich würde gern eine stl map mit einem paar aus <char *, Objekt> machen.

    Es soll eine liste von objekten, die ich (eventuell)laden muss verwalten. und zwar soll wenn der dateiname( char* ) noch nicht in der map ist, das objekt gelagen und in die map eingetragen werden.
    ansonsten, soll ein zeiger auf mein objekt in der map zurückgegeben werden.

    Code
    ModelList::iterator it = mdl_list.find(filename);
    ModelList::iterator it2 = mdl_list.end();
    
    
    	if (it == it2)
    	{
                  object = load(filename);
    	}
             else
            {
                  object = (*it)->second;
            }
             return object
    Alles anzeigen

    ich habs auch shcon mit <string,object> versucht, da hab ich dann zusätzlich das problem, dass "load" ein "char *" erwartet.
    wie ich auf das element in der map zugreifen soll weis ich auch noch nicht.
    danke schon amal für die hilfe.

    LVA Erfahrungsberichte: http://vowi.fsinf.at/

  • Lord Binary
    18
    Lord Binary
    Mitglied
    Reaktionen
    11
    Punkte
    3.301
    Beiträge
    647
    • 20. April 2004 um 20:00
    • #2
    Zitat

    Ich würde gern eine stl map mit einem paar aus <char *, Objekt> machen.

    Das ist mir nicht ganz klar.
    ist char* der Key der map ?
    Und object Objekte die in der Map gespeichert werden ?
    Ist es so gedacht ?

    Zitat


    Es soll eine liste von objekten

    Hmmm ... was jetzt ?
    liste oder map ?
    beides verknüpft ?
    ???

    Zitat


    ich habs auch shcon mit <string,object> versucht, da hab ich dann zusätzlich das problem, dass "load" ein "char *" erwartet.

    das ist kein problem, string hat eine const char* c_str() Methode die den string "C Style" zurückgibt.

    Kurzum: Keine Ahnung was Du genau haben willst.

    Mfg, LB


    Trading for a living [equities,futures,forex]

  • bimbo
    15
    bimbo
    Mitglied
    Reaktionen
    15
    Punkte
    2.320
    Beiträge
    390
    • 20. April 2004 um 20:17
    • #3

    es soll eine MAP sein,
    char * als KEY.
    pobject als WERTE.

    Zitat

    das ist kein problem, string hat eine const char* c_str() Methode die den string "C Style" zurückgibt.


    und das geht eben nicht, weil der sagt, er kann const cahr * nicht in char * konvertieren.

    hab mich da sehr ungenau ausgedrückt, aber als c++ und stl neuling hat man ein schweres leben.
    lg, flo

    LVA Erfahrungsberichte: http://vowi.fsinf.at/

  • Lord Binary
    18
    Lord Binary
    Mitglied
    Reaktionen
    11
    Punkte
    3.301
    Beiträge
    647
    • 20. April 2004 um 20:59
    • #4

    Eine leicht perverse Methode wäre
    vorm Aufruf den String in einen (non const) C-String zu kopieren
    z.B so

    Code
    char *newCstr;
    newstr = new char[TheString.size());
    strncpy(newCStr, TheString.c_str(), TheString.size())+1);
    aufruf(newCStr);
    delete[] newCStr;



    Der Vorteil von string ist, daß es schon einen compare operator definiert hat, den KEY braucht.
    Bei char* ist das klarerweise nicht der Fall.

    Auch das sollte kein Problem sein.

    Völlig ungetester(!) Code

    Code
    class CStrKeyCompare
    {
    public:
    	 bool operator()(char* input1, char* input2) const
    	 {
    		 return strcmp(input1, input2) < 0;
    	 }
    };



    Definition der map mit dem neuen comp operator für char*

    map<char*, Objekt, CStrKeyCompare> whatever;

    Mein Code hat möglicherweise ein paar Fehler, aber im PRINZIP sollte es so oder so ähnlich gehen.
    (Sollte nur das Prinzip zeigen)

    Zitat


    als c++ und stl neuling hat man ein schweres leben.

    Jo :grinning_squinting_face:

    [EDiT]
    Kritischer Punkt bei den eigenen Vergleichsoperatoren für KEY ist, daß es Strict Weak Ordering implementieren muß.
    Ansonsten gibt das böse bugs.
    [/EDIT]

    Mfg, LB


    Trading for a living [equities,futures,forex]

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung