2012-01-21 21 views
5

Sto provando a creare un vettore di bitset in C++. Per questo, ho provato il tentativo, come mostrato nel frammento di codice qui sotto:È possibile creare un vettore di bitset?

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; 
    } 

Quando provo a compilare il programma, ottengo l'errore che legge che bvc non è stato dichiarato nel campo di applicazione. Indica inoltre che gli argomenti template 1 e 2 non sono validi. (la prima riga). Inoltre, nella riga contenente bvc.push_back(bstemp), viene visualizzato un errore che legge l'utilizzo non valido della funzione membro.

+0

Se è utile, sono disposto a pubblicare l'intero codice. Anche se, mi sono abbassato, ho votato in una domanda precedente per postare parte irriverente del codice. Quindi ho messo qui solo la versione più corta. – uyetch

+1

A proposito, sarebbe di grande aiuto se pubblichi gli errori reali che stai ricevendo dal compilatore, invece di descrivere come li capisci. – littleadv

+0

Ecco l'errore che ottengo dopo che ho cambiato vettore > al vettore > (come suggerito nelle risposte 'In funzione 'int main (int, char **)':. errore: Utilizzo non valido di utente (avete fatto dimenticare il '&'?) ' – uyetch

risposta

13

Ho la sensazione che tu stia utilizzando pre C++ 11.

Modifica questo:

vector<bitset<8>> bvc; 

a questo:

vector<bitset<8> > bvc; 

In caso contrario, il >> viene analizzato come l'operatore di spostamento a destra. Questo è stato "risolto" in C++ 11.

+1

il termine si chiama ** Maximal Munch ** se qualcuno è interessato a ulteriori letture. – Barracuda

4

Modifica vector<bitset<8>> bvc a vector<bitset<8> > bvc. Nota lo spazio. >> è un operatore.

Sì, problema di sintassi piuttosto sgradevole.

Problemi correlati