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!

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top