Zweidimensionaler Vector dynamisch erzeugen.



  • Gegeben sind 3 Gruppen mit dazugehörigen linien, welche ich alle in einem vector speicher. Ich greife mittels Sectionlines[i] auf die einzelnen Linien zu.

    bisher:

    vector<pfcOutline2D_ptr> Sectionlines;
    

    ich würde gerne einen zweidimensionalen Vector erstellen, sodass ich bequem mit:

    Sectionlines[1][i}->
    Sectionlines[2][i]->
    Sectionlines[3][i]->

    mit der ersten Zahl auf die jeweilige Gruppe zugreife und mit der zweiten auf die Linienelemente

    klappt nicht :

    vector<vector<int,pfcOutline2D_ptr> > Sectionlines;
    
    for (i = 0; i < Gruppen.size(); i++)// Gruppendurchlaufen
    	{
    		for (k = 0; k < SectionEntities[i]->getarraysize(); k++)//wenn datentyp linie ist, dann in Sectionlines speichern.
    		{
    			if (strcmp(SectionEntities[i]->get(k)->getCipTypeName(), "wfcSection::SectionEntityLine") == 0)
    			{
    				Sectionlines.push_back(wfcSectionEntityLine::cast(SectionEntities[i]->get(k))->GetLine());
    			}
    		}
    	}
    

    Dankeschön ! 🙂



  • Was soll das 'int' da?

    vector< vector<pfcOutline2D_ptr> > Sectionlines;
    


  • Ich dachte das ich 2 Datentypen brauche ?

    Sectionlines[1][i}->

    das erste [] wird doch einfach nur durchnummeriert von der Anzahl der Gruppen, das zweite ist dann mein Datentyp "pfcOutline2D_ptr".



  • Der zweite ist pfcOutline2D_ptr , der erste ist vector<pfcOutline2D_ptr> .

    D.h. Sectionlines[0] gibt eine Referenz auf vector<pfcOutline2D_ptr> zurück. Auf dieser wird dann wieder operator[] aufgerufen und dieser gibt dann pfcOutline2D_ptr zurück



  • Habe es jetzt mit

    vector< vector<pfcOutline2D_ptr> > Sectionlines;
    
    Sectionlines[i].push_back(wfcSectionEntityLine::cast(SectionEntities[i]->get(k))->GetLine());
    

    und auch mal mit:

    vector<pfcOutline2D_ptr> > Sectionlines[10];
    
    Sectionlines[i].push_back(wfcSectionEntityLine::cast(SectionEntities[i]->get(k))->GetLine());
    

    Zu Testzwecken versucht, bei beiden stürzt das Programm ab.



  • Hallo, mit

    vector< vector<pfcOutline2D_ptr> > Sectionlines(10);
    
    Sectionlines[i].push_back(wfcSectionEntityLine::cast(SectionEntities[i]->get(k))->GetLine());
    

    hat es jetzt geklappt, dankeschön !


Anmelden zum Antworten