Zum Inhalt springen

C++-Referenz/ Standardbibliothek/ Container-Klassen/ bitset

Aus Wikibooks
Alte Seite

Die Arbeit am Buch »C++-Referenz« wurde vom Hauptautor eingestellt. Ein Lehrbuch zum Thema C++ ist unter »C++-Programmierung« zu finden. Eine sehr umfangreiche und gute Referenz gibt es unter cppreference.com.

Diese Seite beschreibt C++98, einen stark veralteten Standard. Aktuelle Referenz.

// Header: bitset
#include <cstddef>   // für size_t
#include <string>    // für basic_string
#include <stdexcept> // für invalid_argument, out_of_range, overflow_error
#include <iosfwd>    // für istream, ostream

template<size_t N> class bitset{
public:
// Bit-Referenz:
    class reference{
    public:
        reference& operator=(bool x);           // für b[i] = x;
        reference& operator=(reference const&); // für b[i] = b[j];

        operator bool()const;                   // für x = b[i];

        bool operator~()const;                  // Bits negieren

        reference& flip();                      // für b[i].flip();

        ~reference();

    private:
        reference();

    friend class bitset;
    };

// Konstruktor
    bitset();

    bitset(unsigned long val);

    template<typename charT, typename traits, typename Allocator> explicit bitset(
        basic_string<charT,traits,Allocator> const& str,
        typename basic_string<charT,traits,Allocator>::size_type pos = 0,
        typename basic_string<charT,traits,Allocator>::size_type n =
            basic_string<charT,traits,Allocator>::npos
   );

// bitset-Operationen
    bitset<N>& operator&=(bitset<N> const& rhs);
    bitset<N>& operator|=(bitset<N> const& rhs);
    bitset<N>& operator^=(bitset<N> const& rhs);

    bitset<N>& operator<<=(size_t pos);
    bitset<N>& operator>>=(size_t pos);

    bitset<N>& set();
    bitset<N>& set(size_t pos, int val = true);

    bitset<N>& reset();
    bitset<N>& reset(size_t pos);

    bitset<N> operator~()const;

    bitset<N>& flip();
    bitset<N>& flip(size_t pos);

// Elementzugriff
    reference operator[](size_t pos);

    unsigned long to_ulong()const;

    template <typename charT, typename traits, typename Allocator>
    basic_string<charT, traits, Allocator> to_string()const;

    size_t count()const;
    size_t size()const;

    bool operator==(bitset<N> const& rhs)const;
    bool operator!=(bitset<N> const& rhs)const;

    bool test(size_t pos)const;
    bool any()const;
    bool none()const;

    bitset<N> operator<<(size_t pos)const;
    bitset<N> operator>>(size_t pos)const;
};

// bitset-Operationen
template <size_t N> bitset<N> operator&(bitset<N> const&, bitset<N> const&);
template <size_t N> bitset<N> operator|(bitset<N> const&, bitset<N> const&);
template <size_t N> bitset<N> operator^(bitset<N> const&, bitset<N> const&);

template <typename charT, typename traits, size_t N>
basic_istream<charT, traits>& operator>>(basic_istream<charT, traits>& is, bitset<N>& x);

template <typename charT, typename traits, size_t N>
basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, bitset<N> const& x);