Nếu tôi có vector<bool> vec_bool
thì tôi không thể sửa đổi nội dung của véc tơ bằng cách sử dụng toán tử gán |=
. Đó là, các dòngTại sao toán tử gán phân chia | = không hoạt động với vectơ của bool?
vec_bool[0] |= true;
vec_bool[0] |= vec_bool[1];
lỗi Hãy cho trình biên dịch, trong khi các dòng
bool a = false;
a |= true;
a |= vec_bool[0];
vec_bool[0] = vec_bool[0] | vec_bool[1];
vec_bool[0] = vec_bool[0] || vec_bool[1];
vector<int> vec_int(3);
vec_int[0] |= vec_int[1];
thì không. Lý do cho điều này là gì?
Các lỗi nhất định (bằng gcc) là:
test.cpp:21:17: error: no match for ‘operator|=’ (operand types are ‘std::vector::reference {aka std::_Bit_reference}’ and ‘bool’)
Bạn phải nhớ rằng ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector_bool) không phải là một véc tơ * thông thường *. Nó không phải là một vectơ thực tế của 'bool', nhưng giống như một vectơ các bit, mà việc thực hiện của nó không được chỉ rõ bởi đặc tả C++. –
Bản sao có thể có của [Tại sao std :: vector không có .data()?] (Https://stackoverflow.com/questions/46115669/why-does-stdvectorbool-has-no-data) –
Bạn có thể thực hiện xem http://en.cppreference.com/w/cpp/container/vector_bool để biết thêm thông tin về nó – cbuchart