bitfield.hh
00001 #ifndef DUNE_BITFIELD_HH
00002 #define DUNE_BITFIELD_HH
00003
00004 #include <vector>
00005 #include <iostream>
00006
00007 namespace Dune {
00008
00015 class BitField : public std::vector<bool> {
00016
00017 public:
00018
00020 BitField() : std::vector<bool>() {}
00021
00023 explicit BitField(int n) : std::vector<bool>(n) {}
00024
00026 BitField(int n, bool v) : std::vector<bool>(n) {
00027 for (size_t i=0; i<size(); i++)
00028 (*this)[i] = v;
00029 }
00030
00032 void setAll() {
00033 for (size_t i=0; i<size(); i++)
00034 (*this)[i] = true;
00035 }
00036
00038 void unsetAll() {
00039 for (size_t i=0; i<size(); i++)
00040 (*this)[i] = false;
00041 }
00042
00044 int nSetBits() const {
00045 int n = 0;
00046 for (size_t i=0; i<size(); i++)
00047 n += ((*this)[i]) ? 1 : 0;
00048
00049 return n;
00050 }
00051
00053 friend std::ostream& operator<< (std::ostream& s, const BitField& v)
00054 {
00055 for (size_t i=0; i<v.size(); i++)
00056 s << v[i] << " ";
00057
00058 s << std::endl;
00059 return s;
00060 }
00061
00062 };
00063
00064 }
00065
00066 #endif