Open konabe opened 3 years ago
例えば
'a'
がきたら、abcd...z
の0
番目なので、0
bit目を立てる
'c'
がきたら、abcd...z
の2
番目なので、2
bit目を立てる
やってることはbooleanの配列と本質的に変わらなかったw
僕が最初に知ったかぶりで思いついてたのは、 整数を全部binaryとみなして、 binaryのうちのbitが一つでも違ってたら違うよねみたいなことだったけど、これは効率悪いねw
http://proger.blog10.fc2.com/blog-entry-28.html ここにも書いてあるとおり、 boolean型のサイズは1byte=8bitで、8bit x (文字集合の大きさ) この方法でやると、1bit x (文字集合の大きさ) ってなるから、メモリ消費が8分の1ってなるわけか。 文字集合が十分に大きい(int型のサイズよりも大きい)場合は話が変わるけどw
ここから学べることは、
int型の変数に||= (1 << x)
ってしてたらbinaryフラグを使ってる可能性が高いということw
@ChanPoyu
question1_bitvector.cpp
boolean配列の代わりに、ビットでフラグ立ててるだけって感じっぽい。 例えば
y ||= 1 << x
だったら変数y
のx+1
bit目のフラグを立てるっていう意味になる。