Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > bitset, как задать размер динамически? |
Автор: OlegIT 22.1.2008, 17:28 | ||
Использую шаблон bitset. Но число битов определяется в процессе работы программы. Использовать большую величину для инициализации не хочется, а методов - задать размер, добавить бит … найти не могу. Как можно динамически задать количество битов?
|
Автор: bsa 22.1.2008, 17:36 |
Используй http://www.boost.org/libs/dynamic_bitset/dynamic_bitset.html или пиши сам |
Автор: archimed7592 22.1.2008, 18:44 |
Как вариант, vector< bool >. |
Автор: Mayk 23.1.2008, 09:35 |
или deque<bool>, если боишься стандартной "оптимизации" vector<bool> |
Автор: archimed7592 23.1.2008, 10:11 |
Оптимизация, как раз таки здесь уместна. |
Автор: OlegIT 23.1.2008, 10:22 |
vector<bool> и deque<bool>, не подойдёт, так как не получатся взять uint, а это самое основное из-за чего использую bitset. |
Автор: archimed7592 23.1.2008, 10:52 |
Тогдыть dynamic_bitset + http://www.boost.org/libs/dynamic_bitset/dynamic_bitset.html#to_block_range |
Автор: Mayk 23.1.2008, 13:59 |
Превращать контейнер в не контейнер здесь не уместно. И это не только моё имхо. |
Автор: archimed7592 23.1.2008, 20:50 |
bitset< sizeof(unsigned int) * CHAR_BIT > ![]() |
Автор: JackYF 23.1.2008, 21:05 |
в байте бывает не 8 битов?.. хз, насколько в данном случае это уместно - весь остальной код тогда тоже должен опираться только на sizeof(unsigned int). Не факт, что вообще используется тип unsigned int - возможно, жёстко используются именно 32 бита. |
Автор: archimed7592 24.1.2008, 02:51 | ||||
Угу ![]()
Можно на sizeof T, где тип T вычисляется метапрограммным способом(минимальный тип, имеющий необходимое кол-во бит).
Возможно всё - только откуда взялась эта магическая цифра 32? ![]() |
Автор: JackYF 24.1.2008, 10:18 |
если мне надо число о 0 до 4-х с лишним миллиардов, то я знаю, что мне надо ровно 32 бита, не 16 и не 64, независимо от размеров любых системных типов. |
Автор: Earnest 24.1.2008, 12:25 |
Да какая разница-то? Хоть 32, хоть 33. Автор же собирался добывать Ulong из битсета, значит все его биты должны в этот самый ulong влезть. Ну пусть будет 64... Или именованная константа. Смысл-то не в этом... |