bitset statt vector<bool>?
-
31 Bit Unterschied? bool hat doch nicht nur 1 Bit oder?
Tschau Gartenzwerg
-
bool kann nur 0/1 sein, also 1 bit
-
ich glaube, da irrst du. Auf meinem Linux sieht es wie folgt aus:
sizeof(bool); // liefert 1 => 1 Byte sizeof(char); // liefert 1 => 1 Byte sizeof(int); // liefert 4 => 4 Byte
Kann sein, dass der vector<bool> auf ein Bit optimiert wurde!? Doch das normale bool hat min. 1 Byte. Vielleicht sollte ich dann anstatt vector<int> einen vector<char> nehmen.
Tschau Gartenzwerg
-
Kann sein, dass der vector<bool> auf ein Bit optimiert wurde!?
Ja.
http://www.gotw.ca/publications/mill09.htm
std::vector<bool> is not a container
-
Gartenzwerg schrieb:
ich glaube, da irrst du. Auf meinem Linux sieht es wie folgt aus:
sizeof(bool); // liefert 1 => 1 Byte sizeof(char); // liefert 1 => 1 Byte sizeof(int); // liefert 4 => 4 Byte
Kann sein, dass der vector<bool> auf ein Bit optimiert wurde!? Doch das normale bool hat min. 1 Byte. Vielleicht sollte ich dann anstatt vector<int> einen vector<char> nehmen.
Tschau Gartenzwerg
kann sizeof kleinere werte als 1 zurückliefern? nein? oh,dann is ja klar, wieso bool garantiert ein byte groß ist
-
Der Typ bool ist auf vielen Systemen 1Byte groß, jedoch haben Compiler auch
die Möglichkeit mehrere bools in ein Byte zu stecken.vector<bool> ist jedoch nicht ein Container für bools (siehe den Lin weiter oben)
sondern eine spezialisierung für diesen Typ wodurch es einem bitset gleich kommt.vector<bool> ist im Standard unter 23.2.5 zu finden.
-
Hoppla hat es doch trotz des Fehlers mein Posting reingesetzt.