Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
#1

Динамический bitset, возможно ли такое? - C++

04.11.2013, 19:12. Просмотров 1664. Ответов 34
Метки нет (Все метки)

как известно size в bitset<size> должно быть статической, как реализовать класс с полем bitset<size> в
конструктор\параметр которого передается некое число N
а size = N + -/(какая то мудрая формула + куча циклов)
возможно ли такое?

Добавлено через 1 минуту
просто что то клемануло и эта мысль не покидает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 19:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамический bitset, возможно ли такое? (C++):

Что такое динамический класс? - C++
у меня в работе есть задание &quot;создать динамический класс&quot;. что это значит? нигде ничего внятного не нашел. знаю, что класс создается так ...

Возможно ли создать двумерный динамический массив? - C++
существует ли возможность создать двумерный динамический массив, к примеру 2х5 ?

Приведение типов, возможно ли такое - C++
Всем доброго времени суток... Не знаю как правильно спросить то что я хочу, но попробую объяснить на примере) u_char *packet; //массив...

Возможно ли сделать такое сокращение? - C++
Здравствуйте, скажите пожалуйста возможно ли такое сделать ? Есть четыре цифры, в первой цифре может быть 1 или 2, во второй тоже 1 или...

Простой Кейлоггер. Такое возможно? - C++
Вчера начала изучать C++. Я хочу написать кейлоггер. Но прочитала на одном форуме, что без dll библиотек это невозможно. Алгоритм...

Необъявленые переменные в C++- неужели такое возможно? - C++
template &lt;class T&gt; class bithree { public: void pomechenie() {per= 8;}; }; int main() { // bithree&lt;int&gt; s; ...

34
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 19:18 #2
Возможно, но все операции с битами вам прийдется прописывать вручную

определить массив размером size/8+1 и выполнять операции на нем

как то так
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:20  [ТС] #3
Цитата Сообщение от Cra3y Посмотреть сообщение
определить массив размером size/8+1 и выполнять операции на нем
не дошло
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 19:23 #4
C++
1
char* bits = new char[size/8+1]
в байте 8 бит...
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:27  [ТС] #5
допустим после манипуляций над N , size = 2 (бита) 2/8+1 это как и зачем?

Добавлено через 2 минуты
Цитата Сообщение от Cra3y Посмотреть сообщение
char* bits = new char[size/8+1]
мне нужен именно bitset<size>
например если мне нужно всего 2 бита, то занимаемая память должна быть 2 бита, а не 2 бита + 6 ненужных

Добавлено через 2 минуты
если кто знает как это сделать прошу написать класс и полем bitset<size> + конструктор больше ничего не надо
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 19:28 #6
в памяти любая переменная не может занимать менее одного байта
Даже если вам надо всего 2 бита бо она будет занимать байт, те 8 бит
1
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:39  [ТС] #7
окау
и все как сделать динамический битсет?
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 19:42 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Bits {
private:
    typedef unsigned char byte;
    byte* bits;
    void alocate(int size) {
        bits = new byte[size/8 +1];
    }
public:
    Bits(int size = 0) {
        alocate(size);
    }
    ~Bits() { delete[] bits; }
    bool isSet(int bit) {
        int num1=bit/8;
        int num2=bit%8;
        return (((bits[num1])>>num2)==1);
    }
};
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:46  [ТС] #9
та ну...я спрашиваю за стандартный bitset если не возможно так сделать напишите - это не возможно, если возможно напишите как
и еще раз полем класса должен быть ОБЯЗАТЕЛЬНО bitset!
0
Hrobak
289 / 169 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
04.11.2013, 19:49 #10
Пришло в голову только такое:
C++
1
2
3
4
5
6
template <std::size_t N>
class BB
{
    std::bitset <fun(N)> b;
 
};
где fun (...) - некоторая constexpr функция. Но в таком случае все циклы придется реализовывать с помощью рекурсии.
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 19:50 #11
bitset это шаблон
size - параметр этого шаблона
любой шаблон определяется во время компиляции, следовательно его нельзя переопределить во время исполнения

Не по теме:

поделись, что курил?)

0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.11.2013, 19:53 #12
Возможно, нелишним будет упомянуть про это?
2
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:55  [ТС] #13
Цитата Сообщение от Nick Alte Посмотреть сообщение
Возможно, нелишним будет упомянуть про это?
нее я знаю про ЭТО, интересно просто возможно сделать так или нет, не более
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
04.11.2013, 19:58 #14
В таком случае ответ на вопрос будет "однозначно нет". Параметр bitset должен быть constexpr, а параметр функции им быть не может в принципе ни при каких условиях. Сам буквально наткнулся на днях на это печальное обстоятельство, правда, совсем по другому печальному поводу.
0
Max Dark
шКодер самоучка
1841 / 1641 / 598
Регистрация: 09.10.2013
Сообщений: 3,664
Записей в блоге: 6
Завершенные тесты: 2
04.11.2013, 20:02 #15
C++
1
2
3
vector<bitset<8>> bits;
// ... 
bits[num/8][num%8];
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 20:02
Привет! Вот еще темы с ответами:

Возможно ли объекты и потомки этих объектов поместить в один и тот же динамический массив? - C++
У меня есть объекты, очень сложные объекты. Они постоянно относятся то одному то другому массива, они постоянно выполняют большое...

Bitset<0> - C++
Не на англоязычных просторах ни на наших не нашел, что же означает определение как: bitset&lt;0&gt; Моё предположение, это очищенный...

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

Bitset to int - C++
Здравствуйте! вот пробую: bitset &lt;8&gt; id_paketa = 00000010; cout &lt;&lt; id_paketa &lt;&lt; &quot; &quot; &lt;&lt; id_paketa.to_ullong(); Почему получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
04.11.2013, 20:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru