Datentyp für Bitvektoren



  • Hallo,

    ich möchte einen Algorithmus in C++ implementieren.
    Dazu muss ich als erstes eine Liste von Bitvektoren erstellen.
    Welcher Datentyp würde sich hierfür am besten eignen?
    Es soll so wenig Platz wie möglich benötigen und relativ effizient sein.

    Eine Beispielliste:
    http://up.picr.de/21881906wc.jpg

    Wie wäre es zum Beispiel mit der Klasse "bitset"?


  • Mod

    bitset und vector<bool> erfüllen beide deine Anforderungen. Welches besser passt kommt drauf an, welches Interface für deine Anwendung besser passt.

    Du solltest natürlich nicht auf die Idee kommen, dein 2D-Array als array<bitset> oder array<vector<bool>> darzustellen, das würde deine Platzanforderung völlig kaputt machen und eventuell sogar Laufzeit kosten (beim vector wahrscheinlich mehr als beim bitset). Mach ein einziges großes l*m Objekt und rechne selber die Indizes um. Eine kleine Wrapperklasse, die dies automatisch erledigt, bietet sich an.



  • Könnte man denn nicht auch einfach ein struct definieren?


  • Mod

    mirnyy schrieb:

    Könnte man denn nicht auch einfach ein struct definieren?

    Ein struct und eine class sind identisch bis auf die default-Sichtbarkeit.

    War es das, was du meintest? Die Frage "Könnte man denn nicht auch einfach ein struct definieren?" ist nämlich ohne genauen Kontext ziemlich unverständlich.



  • Warum sollte ich nicht auf die Idee kommen mein 2D-Array als array<bitset> oder array<vector<bool>> darzustellen?
    Warum würde es meine Platzanforderung kaputt machen?



  • Baris schrieb:

    Warum sollte ich nicht auf die Idee kommen mein 2D-Array als array<bitset> oder array<vector<bool>> darzustellen?
    Warum würde es meine Platzanforderung kaputt machen?

    Wie sieht denn das Speicherlayout aus, wenn du es so machst?



  • Das weiss ich ehrlich gesagt nicht..



  • Irgendwie so

    ---xxx---oooooooooo---------------------oooooooooooooo---oooooooooo
       |||   ^                              ^                ^
       || ---|                              |                |
       | -----------------------------------|                |
        -----------------------------------------------------
    

    statt so

    ---oooooooooooooooooooooooooooooooooo-------------
    

    Sorry, bin kein Meister von ASCII Arts/Pr0ns


Anmelden zum Antworten