matrix in einem struct... aber die grösse muss dynamisch sein. vector?



  • Hallo zusammen.

    Ich möchte eine struktur

    struct meinestruktur{
    int a, b, c;
    int zahlenmatrix[dynamischegrösse!][dyn.grösse];
    ...
    };
    

    haben. Das Problem ist jetzt, dass ich die benötigte Grösse des 2D-Arrays erst zur Laufzeit erfahren kann... Aber es muss in der struct vorhanden sein und ich kanns auch nicht 'auf Vorrat' gross machen, da dies zuviel Speicher kosten würde.
    Ich habe sehr wenig Ahnung von der STL, aber kann man da evtl. etwas mit einem vector machen?

    Vielen, vielen Dank für Hilfe!

    schönen Abend



  • ja, ich wuerde dir sogar empfehlen es mit einem vector zu machen.
    zum (hoffentlich besseren) verstaendnis zum thema vector, ein kleines
    testprogramm:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    template <typename T>
    void gebe_aus( const vector<vector<T> >& m )
    {
    	for ( int i = 0; i < m.size(); ++i )
    	{
    		for ( int j = 0; j < m[i].size(); ++j )
    			cout << m[i][j] << " "; // ausgabe
    		cout << endl;
    	}
    }
    
    template <typename T>
    void fuelle( vector<vector<T> >& m )
    {
    	for ( int i = 0; i < m.size(); ++i )
    		for ( int j = 0; j < m[i].size(); ++j )
    			m[i][j] = i+j; // zuweisen von werten
    }
    
    int main()
    {
            // vector mit 3 zeilen und 5 spalten
    	vector<vector<int> > m( 3, vector<int>(5) );
    
    	gebe_aus( m );
    	fuelle( m );
    	cout << endl;
    	gebe_aus( m );
    }
    


  • besten dank für das beispiel, das hilft mir schon viel weiter!

    aber wie kann ich jetzt je nach situation einmal einer variable von meiner struktur einmal ein vector mit 89 spalten und 83 zeilen und einer anderen variablen von meiner struktur einen vector mit 22 spalten und 890 zeilen erstellen?



  • hab mich unklar ausgedrückt:
    mit 'verschiedenen variablen von meiner struktur' mein ich z.B. das:
    meinestruktur dieerstevariable;
    meinestruktur dieanderevariable;

    und dann soll dieerstevariable.ihrvector einen vector mit 89 spalten, 88 zeilen
    und dieanderevariable.ihrvector einen vector mit 893 spalten und 12 zeilen bekommen.

    mein hauptproblem ist die definition vom vector in der struktur selbst.



  • habs nun mit meinvector.resize(...) hinbekommen.

    danke nochmals


Anmelden zum Antworten