Zweidimensionaler String



  • Ich erstelle einen zweidimensionalen String mit der Zeile:

    string Nachrichten[256][256];
    

    Allerdings stürzt mein Compilier (MinGW32) beim compilieren ab. Wenn ich die Zeile auskommentiere nicht. Ist das nicht erlaubt oder sollte ich einen anderen Compilier ausprobieren?

    mfg.



  • joomoo schrieb:

    Ich erstelle einen zweidimensionalen String mit der Zeile:

    string Nachrichten[256][256];
    

    Allerdings stürzt mein Compilier (MinGW32) beim compilieren ab. Wenn ich die Zeile auskommentiere nicht. Ist das nicht erlaubt oder sollte ich einen anderen Compilier ausprobieren?
    mfg.

    geht denn

    typefef string line[256];
    line* Nachrichten=new line[256];
    ...
    delete[] Nachrichten;
    

    ?



  • Ja, das geht. Komisch. Danke, ich hatte echt keine Ahnung wie ich das sonst lösen sollte.

    mfg.



  • joomoo schrieb:

    Ist das nicht erlaubt oder sollte ich einen anderen Compilier ausprobieren?

    Das könnte ein kleines bischen zu groß werden, um auf dem Stack (bzw. Datensegment) noch Platz zu finden. Bist du sicher, daß du 65536(=256*256) Strings auf einen Haufen benötigst?



  • CStoll schrieb:

    joomoo schrieb:

    Ist das nicht erlaubt oder sollte ich einen anderen Compilier ausprobieren?

    Das könnte ein kleines bischen zu groß werden, um auf dem Stack (bzw. Datensegment) noch Platz zu finden. Bist du sicher, daß du 65536(=256*256) Strings auf einen Haufen benötigst?

    Ich glaub nicht. Wäre ein zweidimensionaler Array eigentlich auch mit deques zu machen?

    mfg.



  • joomoo schrieb:

    Ich glaub nicht. Wäre ein zweidimensionaler Array eigentlich auch mit deques zu machen?
    mfg.

    wenn es fast leer ist, was ich annheme, klingt folgendes angebrecht (mal von hash_set abgesehen):

    set<int,string> array;
    nebst
    array[y*256+x]="hallo";
    statt
    array[y][x]="hallo";



  • volkard schrieb:

    joomoo schrieb:

    Ich glaub nicht. Wäre ein zweidimensionaler Array eigentlich auch mit deques zu machen?
    mfg.

    wenn es fast leer ist, was ich annheme, klingt folgendes angebrecht (mal von hash_set abgesehen):

    set<int,string> array;
    nebst
    array[y*256+x]="hallo";
    statt
    array[y][x]="hallo";

    Okay, ich erkläre am besten gleich worum es geht: Ich will einen Chatserver programmieren. Jeder Client soll einen Array kriegen, wo die für ihn noch fälligen Nachrichten drinn stehen. Also wäre bei der Methode mit dem zweidimensionalem Array nur maximal 256 Clients möglich, und auch nur 256 Nachrichten, die noch einem Client geschickt werden müssen - reicht eigentlich. Aber wo ich so recht drüber nachdenke: Das müsste eigentlich auch einfach gehen oder? Also OOP. Ich dachte daran eine Klassen Client zu erstellen und für jeden Clienten erstelle ich eine Instanz(ist das das richtige Wort?). Aber wie komme ich jetzt an ALLE Instanzen(damit meine ich halt diese Dinger da.. ähh) ran? Ein Klassen Array? Geht das eigentlich? Also:

    class Clients
    {
    private:
    string Nachrichten[256];
    }
    Clients Clients[256];
    

    Oder wie könnte ich das realisieren?

    mfg.



  • Schau dir mal in der C++-Referenz deiner Wahl das Thema Container an. In deinem Fall würde sich denke ich ein Set oder Map anbieten, in dem die Clientaccounts gespeichert sind. Und Für die Client-Klasse evtl. ein deque, in dem die Nachrichten abgelegt werden...


Anmelden zum Antworten