2012-01-21 19 views
5

Próbuję utworzyć wektor bitsets w C++. W tym Próbowałem próbę, jak pokazano w poniższym fragmencie kodu:Czy można utworzyć wektor 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; 
    } 

Kiedy próbuję skompilować program, pojawia się błąd, który czyta, że ​​bvc nie został uznany w tym zakresie. Mówi dalej, że argument szablonu 1 i 2 są nieprawidłowe. (pierwsza linia). Ponadto w wierszu zawierającym bvc.push_back(bstemp) pojawia się błąd, który odczytuje nieprawidłowe użycie funkcji składowej.

+0

Jeśli to pomaga, chcę opublikować cały kod. Mimo, że dostałem głosowanie w poprzednim pytaniu za umieszczenie nieodpowiedniej części kodu. Dlatego umieszczam tutaj tylko krótszą wersję. – uyetch

+1

Przy okazji, bardzo by pomogło, gdybyś opublikował rzeczywiste błędy, które otrzymujesz z kompilatora, zamiast opisywać, jak je rozumiesz. – littleadv

+0

Oto błąd, który otrzymuję po zmianie wektora > na wektor > (jak sugerowano w odpowiedziach.) 'W funkcji 'int main (int, char **)': błąd: nieprawidłowe użycie członka (czy zapomnieć o '&'?) ' – uyetch

Odpowiedz

13

Mam wrażenie, że używasz pre C++ 11.

Zmień to:

vector<bitset<8>> bvc; 

do tego:

vector<bitset<8> > bvc; 

przeciwnym razie >> jest analizowany jako operator prawy shift. Zostało to "naprawione" w C++ 11.

+1

termin nazywa się ** Maximal munch **, jeśli ktoś jest zainteresowany dalszymi odczytami. – Barracuda

4

Zmień vector<bitset<8>> bvc na vector<bitset<8> > bvc. Zwróć uwagę na spację. >> jest operatorem.

Tak, dość nieprzyjemny błąd w składni.

Powiązane problemy