spezielle ausgabe von vector



  • vielen dank, aber wie gesagt war das nur ein beispiel. die lösung müßte für unterschiedlich viele vektoren unterschiedlicher länge gelten...



  • Irgendwie leuchtet mir das nicht ein. Du hast einen vector<vector<string> > >, und in jeden String Vektor packst Du Zahlen, die aber alphanummerisch kodiert sind? Und dann auch noch unterscheidlich viele?



  • es ist so ich habe einen int array. in diesem array stehen verschiedene zahlen darüber läuft eine funktion und nach jedem durchlauf werden diese zahlen mit kommata und klammern an bestimmten stellen in einem string gespeichert.
    dieser string wird an den vector gehängt. dann wird wieder die funktion aufgerufen und das neue array in den (wieder leeren) string abgelegt und an das letzte element des vektors angefügt.

    ist die funktion "fertig", dann wird das selbe eine dimension höher (also ist das array um 1 länger) wiederholt und in einem weiteren vektor werden dann hier sämtliche funktionsdurchläufe im string abgespeichert und an diesen neuen vektor angehängt.

    also habe ich entsprechend der dimension dim verschiedene vektoren mit einer von der anzahl der funktionsdurchläufe abhängige länge.

    daher ist die anzahl der vektoren und die länge der vektoren von mal zu mal unterschiedlich, denn dieser vorgang muss mehrmals wiederholt werden.



  • Ich weiss ja auch nicht. Generierst Du Dir diese ominösen String-Vektoren nur, um sie ausgeben zu können? Oder tust Du damit noch was anderes?
    Wenn nicht, würde ich eine formatierte Ausgabe direkt für Deine numerischen Werte implementieren.



  • ohne vektoren ist es unmöglich, was ich nach langer, langer zeit festgestellt habe und wenn ich nur die arrays ausgabe, ist es sehr viel komplizierter und ich hätte das selbe problem.

    im prinzip spielt es für dieses problem keine rolle, was in den strings ist, allein die spezielle ausgabe ist mein (großes) problem.



  • Ah, du hast also einen Vektor mit X Elementen. Diese Elemente sind selbst Vektoren mit Y ints, wobei Y für jeden Vektor unterschiedlich ist, richtig?

    Und dann willst du alle Permutationen der Vektoren haben?



  • Mir erscheint es sehr suspekt, dass man einen derart komplizierten Vektor alleine zur Ausgabe generieren muss anstatt z.B. den <<-Operator direkt für den numerischen Datentypen zu überladen.
    Deshalb frage ich.
    Ich glaube allerdings auch, dass die paar Codeschnipsel noch etwas zu wenig sind, um Dir wirklich helfen zu können. Die Ausgangsdatenbasis wäre hilfreicher (zumindest meiner Meinung nach).



  • Sowas?

    Hast einen Vektor mit Vektoren von ints, Längen jeweils beliebig.
    Gibt dann sämtliche Permutationen aus.

    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    int main(){
    
        vector< vector<int> > num(4);
        // Mit Müll füllen
        for(int i = 0; i < 3; i++){
    	num[0].push_back(i);
    	num[1].push_back(i*2);
    	num[2].push_back(i*3);
    	num[3].push_back(i+4);
        }
    
        vector<int> count(num.size(), 0);
    
        bool done = false;
        do{
    	for(int i = 0; i < num.size(); i++){
    	    cout << num.at(i).at(count.at(i)) << " ";
    	}
    	cout << endl;
    
    	for(int n = num.size() -1; n >= 0; n--){
    	    count[n]++;
    	    if (count[n] == num[n].size()){
    		count[n] = 0;
    		if (n == 0){
    		    done = true;
    		    break;
    		}	    
    	    }else{
    		break;
    	    }
    	}
    
        }while(not done);
    
    }
    


  • nicht nur sowas sondern exakt zu 100% genau das!!

    wie kann ich dir nur danken?
    um auf dieses konstrukt zu kommen, hätte ich wohl noch ein paar tage gebraucht. vielen dank 😉



  • Keine Ursache. Hatte nur mein Interesse geweckt und mir war gerade langweilig. 😉


Anmelden zum Antworten