c ++ вектор передачи битов в функцию

Я хочу реализовать алгоритм на C ++, которому нужен динамически назначаемый огромный вектор битов (512×18 000 000 бит — у меня 16 ГБ ОЗУ).

а) это отлично работает

int nofBits=....(function read from db);
vector < bitset <nofBits> > flags;
flags.resize(512);

но как мне передать его (по ссылке) в функцию? Имейте в виду, я не знаю nofBits во время компиляции.

Я мог бы использовать

vector<vector<bool> >

но не будет ли хуже с точки зрения использования памяти?

1

Решение

Недавно у меня возникла та же проблема, однако, как и в std :: array, вам нужно знать размер набора битов во время компиляции, поскольку это параметр шаблона. я нашел повышение :: dynamic_bitset как альтернатива, и это работало как шарм.

3

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

std::vector<bool> специализируется на эффективном использовании памяти. Это примерно так же эффективно, как пространство std::bitset<N> (несколько дополнительных байтов, потому что его размер является динамическим и биты живут в куче).

Обратите внимание, однако, что std::vector<bool> имеет проблемы, так поступай легко.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector