Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
1

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

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

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

Добавлено через 1 минуту
просто что то клемануло и эта мысль не покидает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2013, 19:12
Ответы с готовыми решениями:

Что такое bitset<8>?
Можете пожалуйста подскозать что это bitset&lt;8&gt; это функция такая?

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

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

Приведение типов, возможно ли такое
Всем доброго времени суток... Не знаю как правильно спросить то что я хочу, но попробую объяснить...

34
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 19:18 2
Возможно, но все операции с битами вам прийдется прописывать вручную

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

как то так
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:20  [ТС] 3
Цитата Сообщение от Cra3y Посмотреть сообщение
определить массив размером size/8+1 и выполнять операции на нем
не дошло
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 19:23 4
C++
1
char* bits = new char[size/8+1]
в байте 8 бит...
0
88 / 83 / 21
Регистрация: 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
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 19:28 6
в памяти любая переменная не может занимать менее одного байта
Даже если вам надо всего 2 бита бо она будет занимать байт, те 8 бит
1
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:39  [ТС] 7
окау
и все как сделать динамический битсет?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
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
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:46  [ТС] 9
та ну...я спрашиваю за стандартный bitset если не возможно так сделать напишите - это не возможно, если возможно напишите как
и еще раз полем класса должен быть ОБЯЗАТЕЛЬНО bitset!
0
292 / 172 / 47
Регистрация: 22.03.2010
Сообщений: 488
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
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 19:50 11
bitset это шаблон
size - параметр этого шаблона
любой шаблон определяется во время компиляции, следовательно его нельзя переопределить во время исполнения

Не по теме:

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

0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
04.11.2013, 19:53 12
Возможно, нелишним будет упомянуть про это?
2
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:55  [ТС] 13
Цитата Сообщение от Nick Alte Посмотреть сообщение
Возможно, нелишним будет упомянуть про это?
нее я знаю про ЭТО, интересно просто возможно сделать так или нет, не более
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
04.11.2013, 19:58 14
В таком случае ответ на вопрос будет "однозначно нет". Параметр bitset должен быть constexpr, а параметр функции им быть не может в принципе ни при каких условиях. Сам буквально наткнулся на днях на это печальное обстоятельство, правда, совсем по другому печальному поводу.
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 20:02 15
C++
1
2
3
vector<bitset<8>> bits;
// ... 
bits[num/8][num%8];
0
292 / 172 / 47
Регистрация: 22.03.2010
Сообщений: 488
04.11.2013, 20:05 16
Cra3y, может тогда уже лучше к специализации std::vector <bool> прибегнуть?
0
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 20:06  [ТС] 17
Цитата Сообщение от Nick Alte Посмотреть сообщение
араметр bitset должен быть constexpr, а параметр функции им быть не может в принципе ни при каких условиях.
к счастью у меня такой проблемы нету, мысли глупые просто в голову лезут

так это не подойдет:?

Цитата Сообщение от Hrobak Посмотреть сообщение
1
2
3
4
5
6
template <std::size_t N>
class BB
{
* * std::bitset <fun(N)> b;
};
где fun (...) - некоторая constexpr функция. Но в таком случае все циклы придется реализовывать с помощью рекурсии.
0
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
04.11.2013, 20:08 18
Цитата Сообщение от Хулиган Посмотреть сообщение
так это не подойдет:?
constexpr - это константы времени компиляции, так что ни о какой "динамике" речи не идет
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
04.11.2013, 20:08 19
Как по мне, лучше реализовать и расширить то, что я предлогал в №8 посте, а это изврат. ИМХО
0
292 / 172 / 47
Регистрация: 22.03.2010
Сообщений: 488
04.11.2013, 20:10 20
Цитата Сообщение от Хулиган Посмотреть сообщение
так это не подойдет:?
Подойдет, но здесь придется передавать n как шаблонный параметр и веселиться с compile-time рекурсией. К тому же шаблонный параметр должен быть constexpr.
0
04.11.2013, 20:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2013, 20:10
Помогаю со студенческими работами здесь

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

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

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

Что такое динамический раздел?
1) вспомогательный раздел 2) раздел с виртуальной машиной 3) раздел переменного объема 4)...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru