3 statt 2 Zuständen->Bitvektor ?



  • Hallo,
    ich bräuchte eine möglichst performante Speicherung von folgendem:

    X = ein element (z.B schwarz)
    O = ein element (z.B weiß)
    _ = gar kein Element

    --> 3 Zustände

    mit 2 Zuständen könnte ich einen bitvektor nutzen (z.B XOOXO -> 10010)

    wie kann ich drei Zustände möglichst klein speichern und zusätzlich die Möglichkeit haben schnell darauf zu operieren...?

    bis jetzt ist mir nichts besseres als ein character string oder ähnliches eingefallen....(z.B. XOO_X -> "10021" )

    Danke



  • Das geht z.B. mit Aufzählungen:

    enum Status {X, O, _};
    

    Da dies dann ein selbstdefinierter ganzzahliger Datentyp ist, kannst Du die angegebenen Bezeichner wie Ganzzahlen behandeln, also "X" ist 0, "O" ist 1, "_" ist 2 etc...



  • benutz doch 2 bit je zustand 😉



  • boost hat zB einen Typ für drei Zustände. Nennt sich afaik tri_bool oder so ähnlich. Damit dürfte aber keine optimale Speicherauslastung machbar sein. Also bleibt dir letztendlich nur, einen Container mit 2 Bit je Element zu basteln.


Anmelden zum Antworten