Anzeige:
Ergebnis 1 bis 2 von 2

Thema: C++ 3er-Vector behandeln.

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.01.2002
    Beiträge
    77

    C++ 3er-Vector behandeln.

    Hi.

    Ich brauche einen 3fachen dynamischen integer Array. Jetzt dachte ich mir, das ich ja einen

    vector<vector<vector<int> > >

    nehmen könnte.

    Nun habe ich mal testweise etwas geschrieben was auch funktioniert. Nun wollte ich fragen, ob das so in Ordnung geht, auch im Bezug auf das aufräumen am Ende.

    Code:
    #include <iostream>
    #include <vector>
    
    std::vector< std::vector< std::vector<int> > > ende;
    
    int main()
    {
    	std::vector<std::vector<int> > mitte;
    	
    	std::vector<int> Wert;
    	
    	Wert.push_back(10);
    	Wert.push_back(13851);
    	
    	mitte.push_back(Wert);
    	
    	ende.push_back(mitte);
    	
    	std::cout << ende[0][0][0] << std::endl;
    	std::cout << ende[0][0][1] << std::endl;
    	std::cout << ende[0][0].size() << std::endl;
    
    	ende[0][0].clear();
    	ende[0].clear();
    	ende.clear();
    	
    	return 0;
    }
    Das gibt mir wie gewünscht

    10
    13851
    2

    aus. Ist das so i.O.? Ich frage nur, weil ich mit solchen Arrays zum ersten mal arbeite.

    Danke.
    SIG kostet 19 Euro extra!

    MfG
    -Nuke-

  2. #2
    Registrierter Benutzer Avatar von panzi
    Registriert seit
    04.05.2001
    Ort
    Kottingbrunn
    Beiträge
    609
    Folgender Code macht das gleiche wie deiner, nur legt es die "Hilfsobjekte" implizit an und deletet sie schon nach dem konstruktoraufruf.
    Die .clear() aufrufe blrauchst du NICHT machen. Der destruktor kümmert sich schon um's Aufräumen, und der wird beim Zerstören des Objektes aufgerufen (am ende des scopes bei nicht dynamischen Objekten, wie hier. also beim } ).
    Code:
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    int main( void ) {
    	int input[] = { 10, 13851 };
    	vector< vector< vector< int > > > werte( 1, vector< vector< int > >( 1, vector< int >( input, input + 2 )));
    	
    /* 
    //  oder:
    	vector< vector< vector< int > > > werte( 1, vector< vector< int > >( 1, vector< int >()));
    	werte[ 0 ][ 0 ].push_back( 10 );
    	werte[ 0 ][ 0 ].push_back( 13851 );
    	
    //	oder:
    	vector< vector< vector< int > > > werte( 1, vector< vector< int > >( 1, vector< int >()));
    	vector< int > & ref = werte[ 0 ][ 0 ];
    
    	ref.push_back( 10 );
    	ref.push_back( 13851 );
    */
    
    	cout << werte[ 0 ][ 0 ][ 0 ] << endl
    	     << werte[ 0 ][ 0 ][ 1 ] << endl
    	     << werte[ 0 ][ 0 ].size() << endl;
    	
    	return 0;
    }
    Intel Core 2 Duo CPU 2.66GHz; Nvidia GeForce 8 8800 GTS; 4GB RAM; Fedora 12; KDE-testing

Lesezeichen

Berechtigungen

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