Une carte un bit en C ++ - Unsigned int fera-t-il le travail?
-
12-11-2019 - |
Question
J'ai peur d'admettre que je n'ai pas utilisé C ++ depuis un certain temps maintenant, mais j'ai peur de le faire maintenant, et je suis un peu rouillé.
J'ai besoin d'avoir un bitmap et je me soucie des performances, ma taille bitmap ne sera plus de 25 bits.
Je pensais à utiliser unsigned INT, mais j'ai peur de ne pas me souvenir de la façon dont il est mis en œuvre en C / C ++
Unsigned IN est-il implémenté comme un numéro binaire régulier?
Je suis également ouvert à toutes les autres suggestions pour un bitmap.
Merci d'avance pour l'aide!
La solution
Utiliser un std::bitset<25>
de l'en-tête <bitset>
. bitset
peut être indexé avec []
et est un modèle, donc il s'étend probablement à un simple unsigned int
(ou équivalent) avec toutes les opérations incorporées.
Autres conseils
Avez-vous considéré std :: bitset de <bitset>
En tête de fichier?
Exemple:
#include <iostream>
#include <bitset>
int main() {
std::bitset<25> bits(146);
std::cout << bits << std::endl;
//using operator[] to access individual bit manually!
for(size_t i = 0 ; i < bits.size() ; ++i)
std::cout << bits[i] << " ";
return 0;
}
Production:
0000000000000000010010010
0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Noter: bits[0]
est le morceau le moins significatif, tandis que bits[bits.size()-1]
est le morceau le plus important!
Démo en ligne: http://ideone.com/3ssf0
considérer un ensemble de bits Au lieu.
Vous devriez pouvoir utiliser un type entier pour une carte un peu, en supposant qu'il a suffisamment de bits pour vous.
Cependant, il y a un <bitset>
dans la bibliothèque standard.