C++/Bitset/bitset

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Use bitset with enum together

<source lang="cpp">

/* 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.
*/
  1. include <bitset>
  2. 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

*/        
 </source>