Use bitset with enum together

/* The following code example is taken from the book
  * "The C++ Standard Library - A Tutorial and Reference"
  * by Nicolai M. Josuttis, Addison-Wesley, 1999
  *
  * (C) Copyright Nicolai M. Josuttis 1999.
  * Permission to copy, use, modify, sell and distribute this software
  * is granted provided this copyright notice appears in all copies.
  * This software is provided "as is" without express or implied
  * warranty, and with no claim as to its suitability for any purpose.
  */
 #include <bitset>
 #include <iostream>
 using namespace std;
 
 int main()
 {
     /* enumeration type for the bits
      * - each bit represents a color
      */
     enum Color { red, yellow, green, blue, white, black, //...,
                  numColors };
 
     // create bitset for all bits/colors
     bitset<numColors> usedColors;
 
     // set bits for two colors
     usedColors.set(red);
     usedColors.set(blue);
 
     // print some bitset data
     cout << "bitfield of used colors:   " << usedColors
          << endl;
     cout << "number   of used colors:   " << usedColors.count()
          << endl;
     cout << "bitfield of unused colors: " << ~usedColors
          << endl;
 
     // if any color is used
     if (usedColors.any()) {
         // loop over all colors
         for (int c = 0; c < numColors; ++c) {
             // if the actual color is used
             if (usedColors[(Color)c]) {
                 //...
             }
         }
     }
 }
 
 /* 
 bitfield of used colors:   001001
 number   of used colors:   2
 bitfield of unused colors: 110110
 
  */

Permanent link to this article: http://bangla.sitestree.com/use-bitset-with-enum-together/

Leave a Reply