вектор — создать динамический набор битов в стандарте C ++?

Мне кажется, я просто надеюсь, что они могут, но может ли вектор получить доступ к функциям-членам набора битов?

Например, могу ли я сделать что-то подобное.

vector<bool> myvector;
myvector.count();
myvector.test(1);

Если нет, то есть ли динамический набор битов с использованием стандартных библиотек C ++?

РЕДАКТИРОВАТЬ:

Я хочу использовать определенные функции набора битов (test, count) и хочу использовать конструктор bitset (unsigned long val),

В основном я хочу создать набор битов для некоторого произвольного val затем выполните некоторые операции с тестом и подсчетом. Затем я хочу освободить и воссоздать битовый набор с уменьшенным значением val. Я хочу продолжать делать это, пока val не станет меньше 8.

Тем не менее, не похоже, что создание динамического набора битов возможно и использование вектора, который является динамическим, означает, что я могу использовать некоторые из хороших функций набора битов.

4

Решение

Похоже, вам не нужен динамический набор битов. std::bitset присваивается копия, поэтому вы можете сделать:

const size_t size = sizeof(unsigned long) * CHAR_BIT;
typedef std::bitset<size> my_bitset;

unsigned long val = 42;
my_bitset bs(val);

/* do work */

bs = my_bitset(--val); // assign with new, decremented val
2

Другие решения

Я уже ответил на подобные вопросы в S.O. Я бы предложил BITSCAN, платформа для динамических битовых наборов, специально ориентированная на быстрое битовое сканирование. Он был протестирован на Linux и Windows. Сравнение с STL BitSet и Boost’s dynamic_bitset доступен Вот.

1