tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
570
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    LadyMarion LadyMarion ist offline Mitglied Bronze
    Registriert seit
    Mar 2005
    Beiträge
    41
    Hallo,

    ich habe mal wieder eine Frage:

    Ich habe eine read-Funktion, die eine Datei zeilenweise in eine Map einliest.
    Diese Map beginnt bei i=1 für die 1. Zeile, i=2 für die 2. Zeile, usw...

    Jetzt gibt es aber in dem Programm Schleifen, die bei i=0 beginnen. Wenn nun innerhalb einer solchen Schleife die Map aufgerufen wird, habe ich nun immer i+1 statt i angegeben. So funktioniert es ja auch. Wenn das nun aber jemand vergisst mit dem i+1, dann wird eben bei 0 begonnen und die Map "falsch" eingelesen.

    Dies kann ich aber doch nicht so einfach abfangen, oder? Weil wenn ein Wert (in diesem Fall 0) nicht vorhanden ist, wird dieser ja immer gleich neu angelegt?

    Wenn ich nun die Schleifen so ändere, dass sie eben nicht mehr von 0 starten, sondern über Iteratoren laufen?

    Also statt
    Code :
    1
    2
    3
    4
    
    for (int i = 0; i < lines.size(); i++) // lines.size() entspricht der Anzahl der Zeilen in der Datei
    ...
    double test = mapname[i+1];
    ...
    jetzt
    Code :
    1
    2
    3
    4
    
    for (iter = mapname.begin(); iter != mapname.end(); iter++)
    ...
    double test = mapname[(*iter).first];
    ...

    Ist das so besser? Oder kann ich sonst irgendwie ungültige Werte abfangen?
     

  2. #2
    Avatar von devDevil
    devDevil devDevil ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Ehm bist du sicher, dass du weiß wofür ne Map gedacht ist? Nen 2D Array auf 1D Array geblittet wäre gut
     

  3. #3
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    bei Maps sollte du schon die Iteratoren verwenden. Die for-Schleife klappt bei dir auch nur, weil du "int" als Key verwendest; bei anderen Typen geht das auf die Art sowieso nicht mehr. Außerdem sind die Iteratoren effizienter, weil du nicht mehr selbst in jedem Schleifendurchlauf derefenzieren musst. Deshalb solltest du übrigens auch besser schreiben:
    Code cpp:
    1
    
    double test = iter->second;
    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

Ähnliche Themen

  1. VBA / Excel: Spalten in Schleife durchlaufen
    Von scarvy im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 13.12.06, 10:18
  2. Webbroser: Links in Schleife durchlaufen
    Von Operator_Jon im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 05.04.05, 15:22
  3. Schleife durchlaufen und abbrechen
    Von stega im Forum PHP
    Antworten: 5
    Letzter Beitrag: 02.01.05, 16:25
  4. if schleife wird fehlerhaft durchlaufen
    Von NightWatcher im Forum PHP
    Antworten: 1
    Letzter Beitrag: 24.11.04, 23:20
  5. Antworten: 1
    Letzter Beitrag: 24.03.04, 07:35