VMS Help
CXXLSTD, Containers, Bitset

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   bitset  - A template class and related functions for storing and
   manipulating fixed-size sequences of bits.

 SYNOPSIS

   #include <bitset>

   template <size_t N>
   class	bitset ;

 DESCRIPTION

   bitset<size_t	N> is a	class that describes objects that can
   store a sequence consisting of a fixed number	of bits, N. Each
   bit represents either the value zero	(reset)	or one (set) and
   has a non-negative position pos.

   ERRORS AND EXCEPTIONS

   Bitset constructors and member functions may report the following
   three types of errors -- each associated with a distinct exception:

   +	  invalid-argument error or invalid_argument() exception;

   +	  out-of-range error or	out_of_range() exception;

   +	  overflow error or over-flow_error() exception;

   If exceptions	are not	supported on your compiler, you	will get an
   assertion failure instead of an exception.

 INTERFACE

   template <size_t N>
   class	bitset {

   public:

   // bit reference:

    class reference {
     friend class bitset<N>;
    public:

      ~reference();
     reference& operator= (bool);
     reference& operator= (const	reference&);
     bool operator~() const;
     operator bool() const;
     reference& flip();
     };

   // Constructors
    bitset ();
    bitset (unsigned long);
    explicit bitset (const string&, size_t = 0,
 		    size_t = (size_t)-1);
    bitset (const bitset<N>&);
    bitset<N>& operator=	(const bitset<N>&);

   // Bitwise Operators and Bitwise Operator Assignment
     bitset<N>& operator&= (const bitset<N>&);
     bitset<N>& operator|= (const bitset<N>&);
     bitset<N>& operator^= (const bitset<N>&);
     bitset<N>& operator<<= (size_t);
     bitset<N>& operator>>= (size_t);

   // Set, Reset, Flip
     bitset<N>& set ();
     bitset<N>& set (size_t, int	= 1);
     bitset<N>& reset ();
     bitset<N>& reset (size_t);
     bitset<N> operator~() const;
     bitset<N>& flip ();
     bitset<N>& flip (size_t);

   // element access
     reference operator[] (size_t);
     unsigned long to_ulong() const;
     string to_string() const;
     size_t count() const;
     size_t size() const;
     bool operator== (const bitset<N>&) const;
     bool operator!= (const bitset<N>&) const;
     bool test (size_t) const;
     bool any() const;
     bool none()	const;
     bitset<N> operator<< (size_t) const;
     bitset<N> operator>> (size_t) const;

   };

   // Non-member	operators
   template <size_t N>
   bitset<N> operator& (const bitset<N>&, const bitset<N>&);

   template <size_t N>
   bitset<N> operator| (const bitset<N>&, const bitset<N>&);

   template <size_t N>
   bitset<N> operator^ (const bitset<N>&, const bitset<N>&);

   template <size_t N>
   istream& operator>> (istream&, bitset<N>&);

   template <size_t N>
   ostream& operator<< (ostream&, const bitset<N>&);

 CONSTRUCTORS

   bitset();
      Constructs	an object of class bitset<N>, initializing all bit
      values to zero.

   bitset(unsigned long val);
      Constructs	an object of class bitset<N>, initializing the first M
      bit values to the corresponding bits in val. M is the smaller  of
      N and the value CHAR_BIT * sizeof(unsigned  long).  If M < N,
      remaining bit positions are initialized to zero.  Note:  CHAR_BIT
      is defined in <climits>.

   explicit
   bitset(const string& str, size_t pos = 0,
 	size_t n = (size_t)-1);
      Determines the effective length rlen	of the	initializing
      string as the smaller of n and str.size() -	pos. The
      function  throws an invalid_argument exception if any of the rlen
      characters in str, beginning at position pos,is other than 0  or
      1. Otherwise, the function  constructs an object of class
      bitset<N>, initializing the first M bit positions to	values
      determined from the corresponding characters in the string  str.
      M is the smaller of N and rlen.  This constructor  requires that
      pos <= str.size(), otherwise it throws an  out_of_range
      exception.

   bitset(const bitset<N>& rhs);
      Copy constructor.	Creates	a copy of rhs.

 ASSIGNMENT OPERATOR

   bitset<N>&
   operator=(const bitset<N>& rhs);
      Erases all	bits in	self, then inserts into	self a copy of each
      bit in rhs.  Returns a reference to *this.

 OPERATORS

   bool
   operator==(const bitset<N>& rhs) const;
      Returns true if the value of each bit in *this equals the value
      of	each corresponding bit in rhs.	Otherwise returns false.

   bool
   operator!=(const bitset<N>& rhs) const;
      Returns true if the value of any bit in *this is not equal	to
      the value of the corresponding bit in rhs. Otherwise returns
      false.

   bitset<N>&
   operator&=(const bitset<N>& rhs);
      Clears each bit in	*this for which	the corresponding bit in rhs
      is	clear and leaves	all other bits unchanged. Returns *this.

   bitset<N>&
   operator|=(const bitset<N>& rhs);
      Sets each bit in *this for	which the corresponding	bit in rhs
      is set, and leaves	all other bits unchanged. Returns *this.

   bitset<N>&
   operator^=(const bitset<N>& rhs);
      Toggles each bit in *this for which the corresponding bit in
      rhs is set, and leaves all other bits unchanged. Returns *this.

   bitset<N>&
   operator<<=(size_t pos);
      Replaces each bit at position I with 0 if	I < pos	or with	the
      value of the bit at	I - pos	if I >=	pos. Returns *this.

   bitset<N>&
   operator>>=(size_t pos);
      Replaces each bit at position I with 0 if pos >= N-I or with
      the value of the bit at position I + pos if pos < N-I. Returns
      * this.

   bitset<N>&
   operator>>(size_t pos) const;
      Returns bitset<N>(*this) >>= pos.

   bitset<N>&
   operator<<(size_t pos) const;
      Returns bitset<N>(*this) <<= pos.

   bitset<N>
   operator~() const;
      Returns the bitset	that is	the logical complement of each bit
      in *this.

   bitset<N>
   operator&(const bitset<N>& lhs,
 	   const bitset<N>& rhs);
 	      lhs gets logical AND of lhs with rhs.

   bitset<N>
   operator|(const bitset<N>& lhs,
 	   const bitset<N>& rhs);
 	      lhs gets logical OR of lhs with rhs.

   bitset<N>
   operator^(const bitset<N>& lhs,
 	   const bitset<N>& rhs);
 	      lhs gets logical XOR of lhs with rhs.

   template <size_t N>
   istream&
   operator>>(istream& is, bitset<N>& x);
      Extracts up to N characters (single-byte) from is.	 Stores
      these characters in a temporary object str of type string, then
      evaluates the expression x = bitset<N>(str).  Characters are
      extracted and stored until any of the following occurs:

 	  - N characters have been extracted and stored
           - An end-of-file occurs on the input sequence
           - The next character is neither '0' nor '1'.  In this case,
             the character is not extracted.

      Returns is.

   template <size_t N>
   ostream&
   operator<<(ostream& os, const	bitset<N>& x);
      Returns os	<< x.to_string()

 MEMBER FUNCTIONS

   bool
   any()	const;
      Returns true if any bit in	*this is  set.	Otherwise returns
      false.

   size_t
   count() const;
      Returns a count of	the number of bits set in *this.

   bitset<N>&
   flip();
      Flips all bits in *this, and returns *this.

   bitset<N>&
   flip(size_t pos);
      Flips the bit at position pos in *this and	returns	*this. Throws
      an out_of_range exception if pos does not correspond to a valid
      bit position.

   bool
   none() const;
      Returns true if no	bit in *this is	set.   Otherwise returns false.

   bitset<N>&
   reset();
      Resets all	bits in	*this, and returns *this.

   bitset<N>&
   reset(size_t pos);
      Resets the	bit at position	pos in *this. Throws an	out_of_range
      exception if pos does not correspond to a valid bit position.

   bitset<N>&
   set();
      Sets all bits in *this, and returns *this.

   bitset<N>&
   set(size_t pos, int val = 1);
      Stores a new value	in the bits at position	pos in *this.  If
      val is nonzero, the stored value is one, otherwise it is zero.
      Throws an out_of_range exception if pos does not correspond to a
      valid bit position.

   size_t
   size() const;
      Returns the template parameter N.

   bool
   test(size_t pos) const;
      Returns true if the bit at	position pos is	set.  Throws an
      out_of_range exception if pos does not correspond to a valid
      bit position.

   string
   to_string() const;
      Returns an	object of type string, N characters long.

      Each position in the new string is	initialized with a character
      ('0' for zero and '1' for  one) representing the value stored in
      the corresponding bit position of *this. Character position N-1
      corresponds to bit position 0.  Subsequent decreasing character
      positions correspond to increasing	bit positions.

   unsigned long
   to_ulong() const;
      Returns the integral value	corresponding to the bits in *this.
      Throws an overflow_error if these bits cannot be represented
      as type unsigned long.

 SEE ALSO

   Containers

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help