NIBBLE Pointer???



  • @sothis: Auch mit Bitfeldern kommst du nicht darum, dir eine eigene Hilfsklasse zu schreiben - Zeiger auf Bitfelder sind nicht erlaubt.

    @Boris: Auf etwas kleineres als einen char kannst du direkt nicht zugreifen. Wenn es dir zu umständlich ist, mit Bit-Operationen zu hantieren, kannst du die auch in eine Hilfsklasse mit zeiger-artigem Interface auslagern:

    class nibble_ptr
    {
      char* base;
      int offset;
    public:
      nibble_ptr(char* b,int off=0) : base(b),offset(off) {}
    
      char operator*()
      {
        return offset&1==0 ? base[offset/2]&0xF : (base[offset/2]&0xF0)>>4;
      }
      ...
    };//Für schreibenden Zugriff benötigst du evt. eine Proxy-Klasse ähnlich wie bei vector<bool>
    


  • CStoll schrieb:

    @sothis: Auch mit Bitfeldern kommst du nicht darum, dir eine eigene Hilfsklasse zu schreiben - Zeiger auf Bitfelder sind nicht erlaubt.

    das hat dir der teufel gesagt :D, ich bin davon ausgegangen, dass BorisDieKlinge
    nur mit kleineren speichereinheiten arbeiten will. dazu brauch man nicht zwingend
    zeiger 🙂



  • korrekt freunde, wollte nur wissen ob ich auf keine einheiten wie bytes arbeiten kann;) das war ne allg. c(c++ frage;)



  • Nimm es nicht persönlich, aber angesichts deines Kenntnisstandes was die Sprache(n) C/C++ angeht, solltest du in Zukunft vielleicht davon absehen anderen Helfen zu wollen.



  • Log dich ein, und schreibst nochmal 👍



  • eine große hilfe ist auch das in der C++ stdlib enthaltende "bitset"



  • wie ist das eigentlich mit std::vector<bool>?

    Wenn ich das noch richtig in Erinnerung habe ist der für bools spezilisiert, sodass er pro element nur 1 bit Daen erzeugt (wird dann Aufgerunden versteht sich) und die Daten sollte doch seriell gespeichert sein -> Pointerzugriff

    EDIT://
    Templates sind spezialisiert, nich überladen 😉



  • Ja, der verwendet intern einen "normalen" vector<char> und packt jeweils 8 Bit in jedes Element dieses Containers - für den Zugriff werden dann Bit-Operatoren verwendet (innerhalb einer Proxy-Klasse "vector<bool>::reference", die Zuweisungen an und von einzelnen Elementen steuert).



  • lolz_ausgeloggt schrieb:

    Nimm es nicht persönlich, aber angesichts deines Kenntnisstandes was die Sprache(n) C/C++ angeht, solltest du in Zukunft vielleicht davon absehen anderen Helfen zu wollen.

    BorisDieKlinge schrieb:

    Log dich ein, und schreibst nochmal 👍

    Eingeloggt oder nicht, aber er hat IMVHO Recht.



  • wie schrieb scott meyers doch gleich? vector<bool> ist ein nettes experiment, aber eines, das fehlgeschlagen ist. oder so ähnlich.

    vector<bool> ist kein container.


Anmelden zum Antworten