Vector nach bedarf erzeugen und benennen



  • zum einfügen z.B. so:

    vector<vector<int>> vectorSpeicher;
    
    //vorher erstellter vector:
    vector<int> tempvec = {1,2,3,4};   //tempvec erzeugen und mit Werten füllen
    vectorSpeicher.push_back(tempvec); //tempvec dem Speicher hinzufügen
    tempvec = {5,6,7,8};               //tempvec mit neuen Werten befüllen
    vectorSpeicher.push_back(tempvec); //und wieder dem Speicher hinzufügen
    
    //oder direkt:
    vectorSpeicher.push_back({1,2,3,4});
    vectorSpeicher.push_back({5,6,7,8});
    

    Das Auslesen ist auch simpel:

    int i = vectorSpeicher[0][2]; //i bekommt den Wert 3
    

    Viele Grüße
    Cherup



  • Cherup schrieb:

    Gut,wenn man die ints öffentlich hält braucht man sie natürlich nicht. Von öffentlichen variablen halte ich aber nicht viel.
    Ich sehe trotzdem noch keinen Vorteil darin eine eigene Klasse zu schreiben statt einen vector zu nutzen, nur um 4 int-variablen zu speichern.

    Wenn diese 4 Werte eine logische Struktur bilden, dann lohnt sich meist eine Klasse. Vor allem will man gerade dann gewöhnlich auch nicht auf die einzelnen Werte zugreifen, sodnern die logische innerere Struktur verändern bzw. eine Operationen darauf/damit ausführen.
    Und damit hat man ganz schnell eine Klasse bzw. deren Verantwortlichkeit.

    Cherup schrieb:

    Die Diskusion geht auch grade etwas am eigentlichen Thema vorbei. Die Frage war ja, wie man zur Laufzeit Variablennamen erzeugt und das geht nicht.

    Richtig.

    Cherup schrieb:

    Was jetzt die beste Vorgehenweise ist hängt von der Problemstellung ab.

    Auch wieder richtig.



  • Das beste wäre jetzt zu wissen, was der TE vor hat 😉



  • Ja das wäre gut 🙂

    Wenn Operationen mit/auf den Werten durchgeführt werden sollen, dann macht eine Klasse wirklich sinn, da stimme ich zu.
    Ich hatte es so verstanden, das bloß beliebig oft 4 Werte gespeichert werden sollen, da macht eine Klasse für mich keinen Sinn.



  • Ok also um nochmals das Problem erläutern, der Nutzer gibt vier Zahlen und ich berechne noch vier dazu, also nach 4 eingegebenenen Zahlen soll ein neuer leerer vector erzeugt werden, nur weiß ich natürlich nicht wie viele vektoren ich benötige, da es davon abhängt wie oft der nutzer vier zahlen eingibt


  • Mod

    C++Developer2000 schrieb:

    Ok also um nochmals das Problem erläutern, der Nutzer gibt vier Zahlen und ich berechne noch vier dazu, also nach 4 eingegebenenen Zahlen soll ein neuer leerer vector erzeugt werden, nur weiß ich natürlich nicht wie viele vektoren ich benötige, da es davon abhängt wie oft der nutzer vier zahlen eingibt

    Also etwas in dieser Richtung?

    #include <iostream>
    #include <vector>
    
    class Viererpack
    {
      int data[4];
      friend std::istream& operator>>(std::istream &in, Viererpack &vp)
      {
        return in >> vp.data[0] >> vp.data[1] >> vp.data[2] >> vp.data[3];
      }
      friend std::ostream& operator<<(std::ostream &out, const Viererpack &vp)
      {
        return out << '{' << vp.data[0] << ", " << vp.data[1] << ", " << vp.data[2] << ", " << vp.data[3] << '}';
      }
    };
    
    int main()
    {
      std::vector<Viererpack> viererpacks;
      std::cout << "Beliebig viele Viererpacks eingeben!\n";
      for(Viererpack vp; std::cin >> vp; ) viererpacks.push_back(vp);
    
      std::cout << "Liste eingegebener Viererpacks:\n";
      for (auto const& vp : viererpacks)
        std::cout << vp << '\n';
    }
    


  • @SeppJ Danke

    Genau sowas in der art hab ich gesucht


Anmelden zum Antworten