Я делаю реализацию vector<bool>
. Я сохраняю целое число без знака и использую побитовые операции, чтобы иметь вектор true и false. Моя проблема в этом; Я могу получить доступ к отдельным битам с помощью оператора [], но как мне получить ссылку на такой бит, чтобы я мог написать
Vector<bool> v(5, true);
v[3] = false;
Где-то я слышал, что вы не должны делать ссылки / указатели на отдельные биты. Краткое описание кода, который работает для получения значения бита:
...
unsigned int arr; // Store bits as unsigned int
unsigned int size_vec; // The size of "bool vector"
...
bool& Vector<bool>::operator[](unsigned int i) {
if (i>=vec_size || i<0) {
throw out_of_range("Vector<bool>::operator[]");
}
int index = 1 << (i-1);
bool n = false;
if (index & arr) {
n=true;
}
return n;
};
Итак, как вы можете вернуть какую-то ссылку, позволяющую изменить отдельные биты?