2012-01-21 13 views
5

Estoy intentando crear un vector de bitsets en C++. Para esto, he probado el intento, como se muestra en el siguiente fragmento de código:¿Es posible crear un vector de bitsets?

vector<bitset<8>> bvc; 
    while (true) { 
     bitset<8> bstemp((long) xtemp); 
     if (bstemp.count == y1) { 
      bvc.push_back(bstemp); 
     } 
     if (xtemp == 0) { 
      break; 
     } 
     xtemp = (xtemp-1) & ntemp; 
    } 

Cuando intento compilar el programa, me sale el error que dice que bvc no fue declarado en el ámbito de aplicación. Además, dice que los argumentos de la plantilla 1 y 2 son inválidos. (la 1ra línea). Además, en la línea que contiene bvc.push_back(bstemp), aparece un error que indica el uso no válido de la función de miembro.

+0

Si ayuda, estoy dispuesto a publicar el código completo. Aunque, bajé voté en una pregunta anterior para publicar una parte irreverente del código. Por lo tanto, pongo solo la versión más corta aquí. – uyetch

+1

Por cierto, sería útil si publica los errores reales que obtiene del compilador, en lugar de describir cómo los entiende. – littleadv

+0

Este es el error que recibo después de cambiar el vector > al vector > (como se sugiere en las respuestas. 'In function 'int main (int, char **)': error: uso no válido del miembro ¿Olvidaste el '&'?) ' – uyetch

Respuesta

13

Tengo la sensación de que está utilizando pre C++ 11.

cambiar esta situación:

vector<bitset<8>> bvc; 

a esto:

vector<bitset<8> > bvc; 

De lo contrario, el >> se analiza como el operador de desplazamiento a la derecha. Esto fue "arreglado" en C++ 11.

+1

el término se llama ** Máxima mordisco ** si alguien está interesado en lecturas posteriores. – Barracuda

4

Cambie vector<bitset<8>> bvc a vector<bitset<8> > bvc. Tenga en cuenta el espacio. >> es un operador.

Sí, problema de sintaxis bastante desagradable.

Cuestiones relacionadas