2012-01-21 3 views
5

C에서 비트 세트 벡터를 만들려고합니다. ++. 나는이 프로그램을 컴파일 할 때비트 집합의 벡터를 만들 수 있습니까?

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

, 나는 bvc이 범위에서 선언되지 않았 음을 읽는 오류 : 아래의 코드와 같이이를 위해, 나는 시도를 시도했다. 또한 템플리트 인수 1과 2가 유효하지 않음을 알립니다. (첫 번째 줄). 또한, bvc.push_back(bstemp)을 포함하는 줄에서 멤버 함수의 잘못된 사용을 읽는 중 오류가 발생합니다.

+0

도움이된다면 전체 코드를 게시 할 의향이 있습니다. 그러나, 나는 코드의 불충분 한 부분을 게시하는 것에 대한 이전 질문에 투표를했습니다. 그러므로 여기에 짧은 버전 만 넣습니다. – uyetch

+1

덧붙여서 컴파일러에서 얻은 실제 오류를 게시하는 방법을 설명하는 대신 게시자가 실제 오류를 게시하면 많은 도움이됩니다. – littleadv

+0

'In function 'int main (int, char **)'에 표시된대로 > 벡터로 벡터 을 바꾼 후 오류가 발생했습니다. 오류 : 멤버의 사용이 잘못되었습니다 (예 : '&'를 잊어 버렸습니까?)' – uyetch

답변

13

나는 pre C++ 11을 사용하고 있다는 느낌이 들었습니다.

변경이이 행

vector<bitset<8>> bvc; 

는 :

vector<bitset<8> > bvc; 

그렇지 않으면 >> 오른쪽 시프트 연산자로 해석된다. 이것은 C++ 11에서 "고정"되었습니다.

+1

누군가가 더 읽을 거리에 관심이 있다면 ** Maximal munch **라고합니다. – Barracuda

4

vector<bitset<8>> bvc에서 vector<bitset<8> > bvc으로 변경하십시오. 공간을주의하십시오. >>은 운영자입니다.

예, 꽤 심한 구문 문제입니다.

관련 문제