PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schleife dynamische Tiefe



dml
07-12-2010, 12:41
Hi!

Ich würde gerne eine Methode erstellen mit der ich Array's mit unterschieldlicher Tiefe bearbeiten kann. Dafür habe ich mich für ein Template entschieden:



template <string str, class T>
void Maske::loop(T ary){
for(int i=0;i<ary.size() ;i++){
for(int j=0;j<ary[i].size();j++){
cout <<"ary["<<i<<"]["<<j<<"]="<<ary[i][j]<<endl;
}
}
}


wobei ich ehrlich gesagt bei dem Template noch ein Problem mit dem String habe und es Umgebe mit:


template <class T1, class T2>
void Maske::loop_secure(T1 str, T2 ary){


Doch mein Hauptproblem ist, wie kann ich die Methode gestalten, das
sie auch Array's unterschiedlicher Tiefe abarbeiten kann?
Vielen Dank für Eure Hifle!

Grüße
dml

msi
07-12-2010, 14:45
du musst rekursiv programmieren




void loop( T any, int depth ) {
for ( int i =0 ; i< T.size(); i++ ) {
if ( depth ) {
loop( T[i], depth-1 );
} else {
cout << ...
}
}
}

dml
07-12-2010, 15:05
Ja, ist schon klar, doch ich muss bei einem Template den Typ vorher initialisieren:


loop<int,string,vector<string > >(x,y,z);
loop<int,string,vector<vector<string> > >(x,y,z);
loop<int,string,int[][] >(x,y,z);
loop<int,string,int[][][] >(x,y,z);

Und so bleibe ich am gleichen Problem hängen.
Aber vielen Dank!