vector size-type



  • gruß,

    wenn ich folgenden vector erstelle:

    vector< vector<float> > vekt1(10, vector<float>(2, 0.0));
    

    sind dann folgende variablendeklarationen fur einen Schleifendurchlauf
    durch den ganzen vektor richtig ? :

    fur den Durchlauf von vektor-objekt zu vektor-objekt im vekt1-objekt:

    vector< vector<float> >::size_type i = 0;
    

    fur den Durchlauf von float-variable zu float variable in einem vektor-objekt
    (welches wiederum im vekt1-objekt ist) :

    vector<float>::size_type i20 = 0;
    

    Schleifendurchlauf :

    vector< vector<float> >::size_type i = 0;
    vector<float>::size_type i20 = 0;
    
    for(i=0; i<vekt1.size(); i++)
    {
     for(i20=0; i20<vekt1[i].size(); i20++)
     {
      cout << vekt1[i][i20];
     }
    }
    

    ist das richtig?



  • Was sagt dein Lieblingskompiler?



  • Ein Iterator wäre natürlich noch schöner. Und den Typ kannst du IMHO nehmen. Aber wenn das nicht passt, spuckt dir dein Compiler eh eine Warnung aus :-).

    Gruß Kimmi



  • Der compiler gibt keine Fehlermeldungen aus.

    Ist denn meine Vorgehensweise richtig??



  • Grundsätzlich ja. Ich würde da ein typedef draus machen und die Variable im Kopf der Schleife deklarieren. Aber falsch ist es so nicht.



  • tn3905 schrieb:

    Ist denn meine Vorgehensweise richtig??

    Zumindest nicht gänzlich falsch. Wie Knivil schon geschrieben hat läuft man durch Container üblicherweise mit Iteratoren, aber der Zugriff über operator[] tuts auch. Meistens ist es allerdings angebracht die Laufvariable erst im Kopf der for-schleife anzulegen und nicht davor, einfach um den Gültigkeitsbereich so lokal wie möglich zu halten. Und ob du jetzt einen vector<>::size_type oder einen anderen integralen Datentyp (z.B. int, unsigned int oder std::size_t) benutzt ist in 99% der Fälle herzlich egal, weil die alle ineinander umwandelbar sind und die vectoren eh nicht so voll werden dass man Probleme mit den Wertebereichen bekommt. (okay, chars sollte man nicht benutzen, und short könnte bei bestimmten anwendungen auch zu klein sein, aber int reicht eigentlich immer)


Anmelden zum Antworten