Anzeige:
Ergebnis 1 bis 4 von 4

Thema: vector im constructor initialisieren

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177

    vector im constructor initialisieren

    Hi!
    Ich habe mal wieder ein kleines Problem einen 3 dimensionalen vector im Konstructor zu initialisieren bei dem ich bitte Eure Hilfe bräuchte.

    Normaler weise wird ein vector ja mit:
    Code:
    vector<vector<vector<string> > >myvector(2, vector<vector<string> >(3, vector<string>);
    initialisiert.

    Doch wenn ich einen vector in einer Klasse erstellen will:
    Code:
    class a{
          vector<vector<vector<string> > >myvector;
    }
    Kann ich ihn nicht initialisieren, sondern muss das im Konstructor tun:
    Code:
    for(int i=0;i<2;i++){
       for(int j=0;j<3;j++){
          for(int k=0;k<15;k++){
                  myvector[i][j].push_back("A");
          }
       }
    }
    Und das, will einfach nicht funktionieren.

    Beste Grüße
    dml

    Geändert von dml (25-11-2010 um 15:13 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Du kannst den vector in der Member-Initialisierer-Liste eines Konstruktors ganz ähnlich initialisieren wie außerhalb einer Klasse. Dein Codeschnippsel sieht auch für sicht betrachtet in Ordnung aus.

    Was ist denn das Problem? Ich könnte jetzt mutmaßen, dass du mit push_back hinter die bereits angelegten Elemente kopierst, und deshalb nicht das erwartete Ergebnis bekommst, aber ohne das du mehr Code zeigst lässt sich nichts genaues sagen.

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von locus vivendi Beitrag anzeigen
    Du kannst den vector in der Member-Initialisierer-Liste eines Konstruktors ganz ähnlich initialisieren wie außerhalb einer Klasse. Dein Codeschnippsel sieht auch für sicht betrachtet in Ordnung aus.
    Die Benutzung der Initialisierungsliste ist quasi gleich, nur ohne Angabe des Typs und ohne Strichpunkt am Ende

    Also
    Code:
    a::a() : myvector(2, vector<vector<string> >(3, vector<string>)
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Cool, hat voll geholfen, vielen Dank!
    Dachte immer der Basisinitialisator wäre nur zum Initialisieren der Basisklasse.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •