Bitset
の非常に基本的な実装を見てみましょう。シングルビットへの参照を返すブール演算子[](int index)
struct Bitset {
bool mask[32];
bool& operator[] (int index) {
return mask[index];
}
};
今、私は可能な最適化があり
Bitset bitset;
bitset[0] = 1;
std::cout << bitset[0] << "\n";
書くことができます。 bool mask[32]
の代わりにunsigned int
を使用できます。
struct Bitset {
unsigned int mask;
bool& operator[] (int index) {
// ??
}
};
それは、このような仕様にbool& operator[] (int index)
を書くことは可能ですか?私はstd::bitset
のようなものをやっていると思うが、どう考えているのだろうか。
'std :: bitset'はおそらく正確にどのビットを突き止めるのかを知っている一種のプロキシオブジェクトを返します。 – Mat
STLのどのコードが何をしているのか知っていれば、ソースを見ない方がいいでしょうか? –
確かに: 'ほとんどのC++環境にこのような小さな要素型が存在しないため、個々の要素はbool要素を模倣する特別な参照としてアクセスされます(http://www.cplusplus.com/reference/stl/bitset/から)。したがって、 'bitmap'の' operator [] 'は' bitset :: reference'を返し、 'bool'は返しません。 @Vlad、 – Vlad