Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> bitset, как задать размер динамически? было: Как изменить размер ? 
:(
    Опции темы
OlegIT
Дата 22.1.2008, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Использую шаблон bitset. Но число битов определяется в процессе работы программы. Использовать большую величину для инициализации не хочется, а методов - задать размер, добавить бит … найти не могу. Как можно динамически задать количество битов?

 ! 
archimed7592
Название темы должно отражать ее суть.


Это сообщение отредактировал(а) archimed7592 - 22.1.2008, 18:46
PM MAIL   Вверх
bsa
Дата 22.1.2008, 17:36 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Используй boost::dynamic_bitset или пиши сам
PM   Вверх
archimed7592
Дата 22.1.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Как вариант, vector< bool >.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Mayk
Дата 23.1.2008, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



или deque<bool>, если боишься стандартной "оптимизации" vector<bool>


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
archimed7592
Дата 23.1.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Оптимизация, как раз таки здесь уместна.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
OlegIT
Дата 23.1.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 684
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



vector<bool> и deque<bool>, не подойдёт, так как не получатся взять uint, а это самое основное из-за чего использую bitset.
PM MAIL   Вверх
archimed7592
Дата 23.1.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Тогдыть dynamic_bitset + to_block_range


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Mayk
Дата 23.1.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(archimed7592 @  23.1.2008,  14:11 Найти цитируемый пост)
Оптимизация, как раз таки здесь уместна. 

Превращать контейнер в не контейнер здесь не уместно. 
И это не только моё имхо.




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 23.1.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(OlegIT @  23.1.2008,  11:22 Найти цитируемый пост)
vector<bool> и deque<bool>, не подойдёт, так как не получатся взять uint, а это самое основное из-за чего использую bitset.

Число битов изменить нельзя, т.к. это аргумент шаблона - т.е. определяется в момент компиляции.
ИМХО, поскольку собираешься получать UINT, то битов у тебя не более 32 - какой динамический размер?
Если уже очень приспичило "динамически", сделай небольшую обертку, включающую bitset<32> и текущий размер (т.е число битов). На полчаса работы.



--------------------
...
PM   Вверх
archimed7592
Дата 23.1.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Earnest @  23.1.2008,  19:27 Найти цитируемый пост)
включающую bitset<32> 

bitset< sizeof(unsigned int) * CHAR_BIT >  smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 23.1.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  23.1.2008,  19:50 Найти цитируемый пост)
CHAR_BIT

в байте бывает не 8 битов?..

Цитата(archimed7592 @  23.1.2008,  19:50 Найти цитируемый пост)
sizeof(unsigned int) * CHAR_BIT

хз, насколько в данном случае это уместно - весь остальной код тогда тоже должен опираться только на sizeof(unsigned int). Не факт, что вообще используется тип unsigned int - возможно, жёстко используются именно 32 бита.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 24.1.2008, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(JackYF @  23.1.2008,  21:05 Найти цитируемый пост)
в байте бывает не 8 битов?..

Угу smile.


Цитата(JackYF @  23.1.2008,  21:05 Найти цитируемый пост)
хз, насколько в данном случае это уместно - весь остальной код тогда тоже должен опираться только на sizeof(unsigned int)

Можно на sizeof T, где тип T вычисляется метапрограммным способом(минимальный тип, имеющий необходимое кол-во бит).

Цитата(JackYF @  23.1.2008,  21:05 Найти цитируемый пост)
Не факт, что вообще используется тип unsigned int - возможно, жёстко используются именно 32 бита.

Возможно всё - только откуда взялась эта магическая цифра 32? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 24.1.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(archimed7592 @  24.1.2008,  01:51 Найти цитируемый пост)
только откуда взялась эта магическая цифра 32?

если мне надо число о 0 до 4-х с лишним миллиардов, то я знаю, что мне надо ровно 32 бита, не 16 и не 64, независимо от размеров любых системных типов.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Earnest
Дата 24.1.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Да какая разница-то? Хоть 32, хоть 33. Автор же собирался добывать Ulong из битсета, значит все его биты должны в этот самый ulong влезть. Ну пусть будет 64... Или именованная константа. Смысл-то не в этом...


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1380 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.