битовая карта в С++ – справится ли unsigned int с этой задачей?

StackOverflow https://stackoverflow.com/questions/5441762

Вопрос

Боюсь признаться, я уже некоторое время не использовал C++, но боюсь, что мне придется сейчас, и я немного заржавел.
Мне нужно растровое изображение, и меня волнует производительность: размер моего растрового изображения не будет превышать 25 бит.
Я думал об использовании unsigned int, но, боюсь, не помню, как это реализовано в c/c++.

Является ли unsigned int реализованным как обычное двоичное число?
Я также открыт для любых других предложений по растровому изображению.
Заранее спасибо за помощь!

Это было полезно?

Решение

Используйте std::bitset<25> из заголовка <bitset>. bitset может быть проиндексирован с помощью [] и является шаблоном, поэтому, скорее всего, он развернется до простого unsigned int (или эквивалент) со всеми встроенными операциями.

Другие советы

Вы учитывали std :: bitset от файла заголовка <bitset>?

Пример:

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

Выход:

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
.

ПРИМЕЧАНИЕ.

Онлайн демонстрация: http://ideone.com/3ssf0

Рассмотрим a вместо этого bitset .

Вы должны быть в состоянии использовать целочисленный тип для битовой карты, предполагая, что у него достаточно битов для вас.

Однако в стандартной библиотеке есть генеракодицетагкод.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top