Eine gute Wahl hängt davon ab, wie Sie die Bits verwenden werden.
std::bitset
ist von fester Größe. Visual C++ 10.0 entspricht nicht den Standards in Bezug auf Konstruktoren; im Allgemeinen müssen Sie eine Lösung bereitstellen. Ironischerweise war dies darauf zurückzuführen, was Microsoft für eine Fehlerbehebung hielt - sie führten einen Konstruktor ein, der ein int
Argument akzeptiert, soweit ich mich erinnere.
std::vector
ist ähnlich wie std::bitset
optimiert. Kosten: Die Indizierung liefert nicht direkt eine Referenz (es gibt keine Verweise auf einzelne Bits in C++), sondern gibt stattdessen ein Proxy-Objekt zurück - was Ihnen erst auffällt, wenn Sie versuchen, es als Referenz zu verwenden. Vorteil: minimaler Speicherbedarf, und der Vektor kann bei Bedarf neu dimensioniert werden.
Einfach z.B. unsigned
zu verwenden ist auch eine Option, wenn Sie mit einer kleinen Anzahl von Bits arbeiten (in der Praxis 32 oder weniger, obwohl die formale Garantie nur 16 Bits beträgt).
Zu guter Letzt sind ALLE GROSSBUCHSTABEN Bezeichner üblicherweise (außer bei Microsoft) für Makros reserviert, um die Wahrscheinlichkeit von Namenskollisionen zu reduzieren. Es ist daher eine gute Idee, ALLE GROSSBUCHSTABEN Bezeichner nicht für anderes als Makros zu verwenden. Und für Makros sollten immer ALLE GROSSBUCHSTABEN Bezeichner verwendet werden (das erleichtert auch die Erkennung).
Prost & Gruß,