Как (надеюсь) мы все знаем, 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;