Pergunta

Tenho medo de admitir, já faz algum tempo que não uso C++, mas agora preciso usá-lo e estou um pouco enferrujado.
Preciso ter um bitmap e me preocupo com o desempenho, meu tamanho de bitmap não será maior que 25 bits.
Eu estava pensando em usar unsigned int, mas infelizmente não me lembro como ele é implementado em c/c++

O unsigned int é implementado como um número binário regular?
Também estou aberto a quaisquer outras sugestões para um bitmap.
Obrigado antecipadamente pela ajuda!

Foi útil?

Solução

Use um std::bitset<25> do cabeçalho <bitset>. bitset pode ser indexado com [] e é um modelo, então provavelmente se expande para apenas um unsigned int (ou equivalente) com todas as operações embutidas.

Outras dicas

Você considerou std::bitset de <bitset> arquivo de cabeçalho?

Exemplo:

#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;
}

Saída:

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

Observação: bits[0] é o bit menos significativo, enquanto bits[bits.size()-1] é a parte mais significativa!

Demonstração on-line: http://ideone.com/3sSF0

Considere um bitset em vez disso.

Você deve ser capaz de usar um tipo inteiro para um mapa de bits, assumindo que ele tenha bits suficientes para você.

No entanto, existe uma <bitset> na biblioteca padrão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top