vektor definieren



  • hi

    ich hab zbsp. ne klasse:

    class Map
    {
    private:
    	std::string file;
    	unsigned int x, y;
    	std::vector<char> fields;
    public:
    	Map();
             void create_map(unsigned int xpos, unsigned int ypos);
    };
    
    Map::Map()
    {
     //..
    }
    

    und create_map(..) benutzt gerade "fields".. also in einer Schleife(x != fields.size()...)
    und dabei muss man ja fields noch die Elementeanzahl geben, aber wo?

    mfg



  • ohje, bitte drücke dich in zukunft etwas deutlicher aus :>
    ich rate jetzt einfach mal, was du wissen möchtest.

    fields[index] oder fields.at(index)



  • ne ich möchte schon in private den vektor mit elementen definieren:

    std::vector<char> fields(50);
    

    geht ja aber nicht, deswegen such ich ne lösung 😉



  • Du MUSST fields keine Elementezahl mitgeben, die dynamische Speicherverwaltung übernimmt der Vector selbstständig. fields.size() gibt dabei immer die tatsächliche Anzahl der im Vektor enthaltenen Elemente zurück, unabhängig davon, welche Kapazität der Vektor im Hintergrund besitzt. Du KANNST einen vector aber mit einer bestimmten Kapazität initialisieren, falls die Größe des vectors bekannt ist, und du dir damit zeitaufwändige Speicherkopieroperationen ersparen möchtest. In dem Fall gehört die Angabe in die Initialisierungsliste deines Konstruktors:

    Map::Map() : fields(50) 
    { 
      ...
    }
    

    Grüße,

    Martin



  • Definiert zwar NICHT irgendwelche Elemente, aber vllt meinste das:

    Map::Map():fields(50) { /* .. */ }
    

Anmelden zum Antworten