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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:12     Динамический bitset, возможно ли такое? #1
как известно size в bitset<size> должно быть статической, как реализовать класс с полем bitset<size> в
конструктор\параметр которого передается некое число N
а size = N + -/(какая то мудрая формула + куча циклов)
возможно ли такое?

Добавлено через 1 минуту
просто что то клемануло и эта мысль не покидает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 19:18     Динамический bitset, возможно ли такое? #2
Возможно, но все операции с битами вам прийдется прописывать вручную

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

как то так
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:20  [ТС]     Динамический bitset, возможно ли такое? #3
Цитата Сообщение от Cra3y Посмотреть сообщение
определить массив размером size/8+1 и выполнять операции на нем
не дошло
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 19:23     Динамический bitset, возможно ли такое? #4
C++
1
char* bits = new char[size/8+1]
в байте 8 бит...
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:27  [ТС]     Динамический bitset, возможно ли такое? #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> + конструктор больше ничего не надо
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 19:28     Динамический bitset, возможно ли такое? #6
в памяти любая переменная не может занимать менее одного байта
Даже если вам надо всего 2 бита бо она будет занимать байт, те 8 бит
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:39  [ТС]     Динамический bitset, возможно ли такое? #7
окау
и все как сделать динамический битсет?
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 19:42     Динамический bitset, возможно ли такое? #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);
    }
};
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:46  [ТС]     Динамический bitset, возможно ли такое? #9
та ну...я спрашиваю за стандартный bitset если не возможно так сделать напишите - это не возможно, если возможно напишите как
и еще раз полем класса должен быть ОБЯЗАТЕЛЬНО bitset!
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
04.11.2013, 19:49     Динамический bitset, возможно ли такое? #10
Пришло в голову только такое:
C++
1
2
3
4
5
6
template <std::size_t N>
class BB
{
    std::bitset <fun(N)> b;
 
};
где fun (...) - некоторая constexpr функция. Но в таком случае все циклы придется реализовывать с помощью рекурсии.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 19:50     Динамический bitset, возможно ли такое? #11
bitset это шаблон
size - параметр этого шаблона
любой шаблон определяется во время компиляции, следовательно его нельзя переопределить во время исполнения

Не по теме:

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

Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
04.11.2013, 19:53     Динамический bitset, возможно ли такое? #12
Возможно, нелишним будет упомянуть про это?
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 19:55  [ТС]     Динамический bitset, возможно ли такое? #13
Цитата Сообщение от Nick Alte Посмотреть сообщение
Возможно, нелишним будет упомянуть про это?
нее я знаю про ЭТО, интересно просто возможно сделать так или нет, не более
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
04.11.2013, 19:58     Динамический bitset, возможно ли такое? #14
В таком случае ответ на вопрос будет "однозначно нет". Параметр bitset должен быть constexpr, а параметр функции им быть не может в принципе ни при каких условиях. Сам буквально наткнулся на днях на это печальное обстоятельство, правда, совсем по другому печальному поводу.
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 20:02     Динамический bitset, возможно ли такое? #15
C++
1
2
3
vector<bitset<8>> bits;
// ... 
bits[num/8][num%8];
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
04.11.2013, 20:05     Динамический bitset, возможно ли такое? #16
Cra3y, может тогда уже лучше к специализации std::vector <bool> прибегнуть?
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
04.11.2013, 20:06  [ТС]     Динамический bitset, возможно ли такое? #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 функция. Но в таком случае все циклы придется реализовывать с помощью рекурсии.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11813 / 6792 / 769
Регистрация: 27.09.2012
Сообщений: 16,856
Записей в блоге: 2
Завершенные тесты: 1
04.11.2013, 20:08     Динамический bitset, возможно ли такое? #18
Цитата Сообщение от Хулиган Посмотреть сообщение
так это не подойдет:?
constexpr - это константы времени компиляции, так что ни о какой "динамике" речи не идет
Max Dark
В поиске работы
 Аватар для Max Dark
1546 / 1399 / 501
Регистрация: 09.10.2013
Сообщений: 3,185
Записей в блоге: 8
Завершенные тесты: 2
04.11.2013, 20:08     Динамический bitset, возможно ли такое? #19
Как по мне, лучше реализовать и расширить то, что я предлогал в №8 посте, а это изврат. ИМХО
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 20:10     Динамический bitset, возможно ли такое?
Еще ссылки по теме:

C++ Возможно ли сделать такое сокращение?
C++ Bitset to int
Запись bitset в bmp C++

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

Или воспользуйтесь поиском по форуму:
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
04.11.2013, 20:10     Динамический bitset, возможно ли такое? #20
Цитата Сообщение от Хулиган Посмотреть сообщение
так это не подойдет:?
Подойдет, но здесь придется передавать n как шаблонный параметр и веселиться с compile-time рекурсией. К тому же шаблонный параметр должен быть constexpr.
Yandex
Объявления
04.11.2013, 20:10     Динамический bitset, возможно ли такое?
Ответ Создать тему
Опции темы

Текущее время: 12:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru