2012-01-21 19 views
5

Tôi đang cố tạo một vectơ các bit trong C++. Đối với điều này, tôi đã cố gắng nỗ lực như trong đoạn mã dưới đây:Có thể tạo một vectơ các bit không?

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

Khi tôi cố gắng biên soạn chương trình, tôi nhận được lỗi mà đọc rằng bvc đã không được khai báo trong phạm vi. Nó tiếp tục nói rằng đối số mẫu 1 và 2 không hợp lệ. (dòng thứ nhất). Ngoài ra, trong dòng có chứa bvc.push_back(bstemp), tôi nhận được lỗi sử dụng chức năng thành viên không hợp lệ.

+0

Nếu được, tôi sẵn sàng đăng toàn bộ mã. Mặc dù, tôi đã bỏ phiếu bình chọn trong một câu hỏi trước đó để đăng một phần mã không đáng kể. Do đó tôi chỉ đặt phiên bản ngắn hơn ở đây. – uyetch

+1

Bằng cách này, nó sẽ giúp rất nhiều nếu bạn đăng các lỗi thực tế bạn đang nhận được từ trình biên dịch, thay vì mô tả cách bạn hiểu chúng. – littleadv

+0

Đây là lỗi tôi nhận được sau khi tôi thay đổi véc tơ > thành vector > (như được đề xuất trong câu trả lời) 'Chức năng' int main (int, char **) ': lỗi: sử dụng không hợp lệ thành viên (bạn có quên '&'?) ' – uyetch

Trả lời

13

Tôi có cảm giác rằng bạn đang sử dụng tiền tố C++ 11.

Thay đổi này:

vector<bitset<8>> bvc; 

này:

vector<bitset<8> > bvc; 

Nếu không, >> được phân tách như các nhà điều hành phải thay đổi. Đây là "cố định" trong C++ 11.

+1

thuật ngữ được gọi là ** Tối đa munch ** nếu ai đó quan tâm để đọc thêm. – Barracuda

4

Thay đổi vector<bitset<8>> bvc thành vector<bitset<8> > bvc. Lưu ý không gian. >> là một toán tử.

Có, vấn đề cú pháp khá khó chịu.

Các vấn đề liên quan