Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
ANSI С/С++
(Модератор:
Вад
) > Тема:
std::bitset
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: std::bitset (Прочитано 10755 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
std::bitset
«
:
07-03-2010 16:39 »
вопрос по bitset :
как я понимаю, биты хранятся "плотно прижатыми", то есть весь блок состоит из следующего количества байтов
count*size/8 + (count*size%8?1:0)
как корректно получить указатель на начало этого блока, чтоб сохранить где-то, а потом и обрантую операцию провернуть - загрузить блок, создать экземпляр bitset и одним движением закатать данные (при помощи memset)?
«
Последнее редактирование: 07-03-2010 20:33 от Алексей1153++
»
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: std::bitset
«
Ответ #1 :
07-03-2010 17:17 »
а, видимо, так
std::bitset<100> bs;
(BYTE*)&bs - начало блока
sizeof(bs) - длина блока в байтах
судя по
Код:
class bitset
{
// store fixed-length sequence of Boolean elements
typedef unsigned long _Ty;
// base type for a storage word
enum {digits = _Bits};
// extension: compile-time size()
...
...
_Ty _Array[_Words + 1];
// the set of bits
};
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Вад
Модератор
Offline
Пол:
Re: std::bitset
«
Ответ #2 :
07-03-2010 19:03 »
У bitset должны быть операторы ввода из потока и вывода в поток. А кроме того, метод to_string и конструктор из строки.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: std::bitset
«
Ответ #3 :
07-03-2010 19:04 »
мне не нужна строка, мне надо один к одному побитовое содержание. Так как строка занимает места в 8 раз больше ) Ну и скорость страдает
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Антон (LogRus)
Глобальный модератор
Offline
Пол:
Внимание! Люблю сахар в кубиках!
Re: std::bitset
«
Ответ #4 :
10-03-2010 04:17 »
Алексей1153++
, если не получается
читай инструкцию
http://www.cplusplus.com/reference/stl/bitset/
1. конструктор может принимать строку вида "01101101101"
2. метод to_string может возвращать строку вида "01101101101"
Записан
Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
Re: std::bitset
«
Ответ #5 :
10-03-2010 04:44 »
LogRus
, Не совсем понял, что не получается ?
А строки мне не нужны, я же говорю. Строка занимает места в 8 раз больше, чем массив с битами , да и скорось загрузки/извлечения всего блока данных ниже со строками
Записан
>FAQ ПО ПРОГР.
>ССЫЛКИ ПО ПРОГР.
>Правила"Неотложки"
Антон (LogRus)
Глобальный модератор
Offline
Пол:
Внимание! Люблю сахар в кубиках!
Re: std::bitset
«
Ответ #6 :
10-03-2010 04:59 »
ну если набор не большой, то можно использовать to_ulong
НО я у себя использовал обёртку над вектором, вектор сбрасывать на диск и в БД проще
Записан
Странно всё это....
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Программирование
>
C/C++
>
ANSI С/С++
(Модератор:
Вад
) > Тема:
std::bitset
Загружается...