stlのbitsetの2次元版がほしくなったので実装した。
#pragma once
#include<bitset>
template<size_t X, size_t Y>
class bitset2d : public std::bitset<X * Y>{
private:
typedef std::bitset<X * Y> base;
public:
bitset2d(){}
base& set(size_t x, size_t y, int val){
return base::set(X * y + x, val);
}
bool at(size_t x, size_t y){
return base::at(X * y + x);
}
reference& operator()(size_t x, size_t y){
return base::operator[](X * y + x);
}
};
簡単な使い方
bitset2d<10, 20> bits; //10 * 20のbitsetを作る
bits.set(2, 4, 1) //(2, 4)に1をセット
cout << bits.at(2, 4) << endl;
bits(5, 5) = 1; //[]の代わり
0 件のコメント:
コメントを投稿