Как мы надеемся, мы все знаем, что vector<bool>
полностью поврежден и не может рассматриваться как массив C. Каков наилучший способ получить эту функциональность? До сих пор я думал о следующих идеях:
- Вместо этого используйте
vector<char>
или - Используйте класс-оболочку и используйте
vector<bool_wrapper>
Как вы, ребята, справляетесь с этой проблемой? Мне нужна функциональность c_array()
.
В качестве дополнительного вопроса, если мне не нужен метод c_array()
, каков наилучший способ решения этой проблемы, если мне нужен произвольный доступ? Должен ли я использовать deque или что-то еще?
Редактировать:
- Мне нужен динамический размер.
- Для тех, кто не знает,
vector<bool>
специализирован, так что каждыйbool
занимает 1 бит. Таким образом, вы не можете преобразовать его в массив в стиле C. - Я думаю, что "обертка" немного неправильное. Я думал что-то вроде этого:
Конечно, тогда я должен прочитать в my_bool
из-за возможных проблем с выравниванием :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;