Standard C++ Library Copyright 1998, 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 fol- lowing three types of errors - each associated with a dis- tinct exception: o Invalid-argument error or invalid_argument() exception; o Out-of-range error or out_of_range() exception; o Overflow error or over-flow_error() exception; If exceptions are not supported on your compiler, you get an assertion failure instead of an exception. INTERFACE template <size_t N> class bitset { public: // bit reference: class reference { friend class bitset; public: ~reference(); reference& operator= (bool); reference& operator= (const reference&); bool operator~() const; operator bool() const; reference& flip(); }; // Constructors bitset (); bitset (unsigned long); template<class charT, class traits, class Allocator> explicit bitset (const basic_string<charT, traits, Allocator>, typename basic_string<charT, traits, Allocator>::size_type=0, typename basic_string<charT, traits, Allocator>::size_type= basic_string<charT, traits, Allocator>::npos); 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; template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> to_string(); 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>. template<class charT, class traits, class Allocator> explicit bitset (const basic_string<charT, traits, Allocator>, typename basic_string<charT, traits, Allocator>::size_type=0, typename basic_string<charT, traits, Allocator>::size_type= basic_string<charT, traits, Allocator>::npos); 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 expects pos <= str.size(). If that is not true, the constructor throws an out_of_range exception. bitset(const bitset<N>& rhs); Creates a copy of rhs. ASSIGNMENT OPERATORS 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. Oth- erwise 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 fol- lowing occurs: - N characters have been extracted and stored - An end-of-file is reached 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. template<class charT, class traits, class Allocator> basic_string<charT, traits, Allocator> to_string(); 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
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |