Como (afortunadamente) todos sabemos, vector<bool>
está totalmente roto y no puede tratarse como una matriz c. ¿Cuál es la mejor manera de obtener esta funcionalidad? Hasta el momento, las ideas que he pensado son:Alternativa al vector <bool>
vector<char>
Utilice un lugar, o- Utilice un contenedor de clase y tienen
vector<bool_wrapper>
¿Cómo ustedes manejar este problema? Necesito la funcionalidad c_array().
Como una pregunta complementaria, si no necesito el método c_array(), ¿cuál es la mejor manera de abordar este problema si necesito acceso aleatorio? ¿Debería usar un deque u otra cosa?
Editar:
- sí necesito ajuste dinámico del tamaño.
- Para aquellos que no saben,
vector<bool>
está especializado de modo que cada bool toma 1 bit. Por lo tanto, no puede convertirlo a una matriz de estilo c. - Supongo que "envoltorio" es un nombre poco apropiado. Estaba pensando en algo como esto:
Por supuesto, entonces tengo que leer en un my_bool debido a posibles problemas de alineación :(
struct my_bool
{
bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
¿Hay alguna razón para no usar ... una matriz estilo C? – kquinn
rlbond, ¿necesitas tamaño dinámico? –
Ok Voy a morder: ¿por qué crees que el vector está "totalmente roto"? –