SyntaxHighlighter

StackEdit CSS

2012年10月8日月曜日

2次元版bitset

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 件のコメント:

コメントを投稿