私はvector<bool>
を実装しています。私は符号なしのintを保存し、ビット単位の演算を使って真と偽のベクトルを持つ。私の問題はこれです。私は[]オペレータによって個々のビットにアクセスすることができますが、どのように私は、私は、私はあなたが個々のビットへの参照/ポインタをすべきではないということを聞いたoperator []がunsigned intの個々のビットへの参照を返すようにするには?
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;
};
は、どのようにあなたはそれが可能な個々のビットを変更すること参照のいくつかの並べ替えを返すことができますか?
天国いいえ、私たちは*他* 'ベクトル'実装する必要はありません - 1は十分以上です! –
不幸なことに、私に任務を与える人は同意しませんでした。 – pigelin
冷蔵庫はまさに今、何百万という疑問が合理的に見えていて、賢明な助言の最初の兆候には、ああ、私は理由ABCのためにXYZを許可されていませんが、私はあなたにこれを伝えていないより楽しいと思った。 –