Dynamisches 3d-char-array



  • hallo

    ich bin dabei, eine verschlüsslung zu entwickeln, die auf einem char-zeichensatz basiert, der quasi wie vigenere in 3d verwendet wird.

    alles steht und fällt also mit dem array.
    ich habe jetzt das problem, dass ich nicht genau weiß, wie ich es definieren / benutzen / zugreifen soll.

    bisher sieht das ( gekürzt auf das wesentliche) so aus:

    std::vector<std::string> Array; //ist das die ideale struktur?
                                    //ich hatte auch an eine 2d-struktur gedacht..
    
    for (unsigned i = 0; i < CharSet.length(); i++) //CharSet ist der Zeichensatz
            {
                std::string Row ("");
                std::vector<std::string> Field;
                for (unsigned ii = 0; ii < CharSet.length(); ii++)
                {
                    for (unsigned iii = 0; iii < CharSet.length(); iii++)
                    {
                        Row.push_back(' ');//erster test sollte ohne 3. dimension
                    }
                    Field.push_back(Row);
                }
                Array.push_back(Field);
            }
    

    codeblocks compiliert das wunderbar, zur laufzeit wird nur ein "unerwarteter" fehler gezeigt, den ich im konstruktor der klasse (eben in dem hier gezeigtem code) lokalisiert habe.

    was geht da falsch? und wie muss der zugriff erfolgen? wie kann ich das array "aufbauen"?

    vielen dank. 😃



  • der eine kommentar ist falsch. der erste test sollte nicht ohne die dritte dimension sein, sondern ein mit leerzeichen gefülltes array erzeugen... mein fehler, habe 2 varianten des anfanges..


  • Mod

    Wenn das compiliert, hast du eine sehr ungewöhnliche Implementierung von std::vector.

    Wie soll das gehen?

    std::vector<std::string> Array;
    ...
    std::vector<std::string> Field;
    ...
    Array.push_back(Field);
    


  • mhh da hab ich irgendwas falsch abgetippt.

    die funktion lautet jetzt aber schon:

    for(unsigned i = 0; i < this->Charset.length(); i++)
        {
             Array.push_back(transformString(this->Charset, i));
        }
    

    und hängt also nur noch strings an.

    das problem habe ich also gelöst.

    danke trotzdem, dass wenigstens du dich gemeldet hast.

    [close]



  • user_x schrieb:

    ich habe jetzt das problem, dass ich nicht genau weiß, wie ich es definieren / benutzen / zugreifen soll.

    char d3 [10][10][10];
    ?



  • Zum Thema dreidimensional addressieren in einem 1D-Array:

    http://www.developia.de/developia/viewarticle.php?cid=19547&page=1

    P.S.: Fehler beim Abtippen verhindert man, indem man nicht abtippt. Copy&Paste ist das Mittel der Wahl! 🙂


Anmelden zum Antworten