Files
2025-10-25 03:02:53 +03:00

13 KiB
Raw Permalink Blame History

[bitset.members]

22 General utilities library [utilities]

22.9 Bitsets [bitset]

22.9.2 Class template bitset [template.bitset]

22.9.2.3 Members [bitset.members]

🔗

constexpr bitset& operator&=(const bitset& rhs) noexcept;

1

#

Effects: Clears each bit in*this for which the corresponding bit in rhs is clear, and leaves all other bits unchanged.

2

#

Returns: *this.

🔗

constexpr bitset& operator|=(const bitset& rhs) noexcept;

3

#

Effects: Sets each bit in*this for which the corresponding bit in rhs is set, and leaves all other bits unchanged.

4

#

Returns: *this.

🔗

constexpr bitset& operator^=(const bitset& rhs) noexcept;

5

#

Effects: Toggles each bit in*this for which the corresponding bit in rhs is set, and leaves all other bits unchanged.

6

#

Returns: *this.

🔗

constexpr bitset& operator<<=(size_t pos) noexcept;

7

#

Effects: Replaces each bit at position I in*this with a value determined as follows:

If I < pos, the new value is zero;

If I >= pos, the new value is the previous value of the bit at position I - pos.

8

#

Returns: *this.

🔗

constexpr bitset& operator>>=(size_t pos) noexcept;

9

#

Effects: Replaces each bit at position I in*this with a value determined as follows:

If pos >= N - I, the new value is zero;

If pos < N - I, the new value is the previous value of the bit at position I + pos.

10

#

Returns: *this.

🔗

constexpr bitset operator<<(size_t pos) const noexcept;

11

#

Returns: bitset(*this) <<= pos.

🔗

constexpr bitset operator>>(size_t pos) const noexcept;

12

#

Returns: bitset(*this) >>= pos.

🔗

constexpr bitset& set() noexcept;

13

#

Effects: Sets all bits in*this.

14

#

Returns: *this.

🔗

constexpr bitset& set(size_t pos, bool val = true);

15

#

Effects: Stores a new value in the bit at position pos in*this.

If val is true, the stored value is one, otherwise it is zero.

16

#

Returns: *this.

17

#

Throws: out_of_range if pos does not correspond to a valid bit position.

🔗

constexpr bitset& reset() noexcept;

18

#

Effects: Resets all bits in*this.

19

#

Returns: *this.

🔗

constexpr bitset& reset(size_t pos);

20

#

Effects: Resets the bit at position pos in*this.

21

#

Returns: *this.

22

#

Throws: out_of_range if pos does not correspond to a valid bit position.

🔗

constexpr bitset operator~() const noexcept;

23

#

Effects: Constructs an object x of classbitset and initializes it with*this.

24

#

Returns: x.flip().

🔗

constexpr bitset& flip() noexcept;

25

#

Effects: Toggles all bits in*this.

26

#

Returns: *this.

🔗

constexpr bitset& flip(size_t pos);

27

#

Effects: Toggles the bit at position pos in*this.

28

#

Returns: *this.

29

#

Throws: out_of_range if pos does not correspond to a valid bit position.

🔗

constexpr bool operator[](size_t pos) const;

30

#

Hardened preconditions: pos < size() is true.

31

#

Returns: true if the bit at position pos in *this has the value one, otherwise false.

32

#

Throws: Nothing.

🔗

constexpr bitset::reference operator[](size_t pos);

33

#

Hardened preconditions: pos < size() is true.

34

#

Returns: An object of typebitset::reference such that(*this)[pos] == this->test(pos), and such that(*this)[pos] = val is equivalent tothis->set(pos, val).

35

#

Throws: Nothing.

36

#

Remarks: For the purpose of determining the presence of a data race ([intro.multithread]), any access or update through the resulting reference potentially accesses or modifies, respectively, the entire underlying bitset.

🔗

constexpr unsigned long to_ulong() const;

37

#

Returns: x.

38

#

Throws: overflow_error if the integral value x corresponding to the bits in *this cannot be represented as type unsigned long.

🔗

constexpr unsigned long long to_ullong() const;

39

#

Returns: x.

40

#

Throws: overflow_error if the integral value x corresponding to the bits in *this cannot be represented as type unsigned long long.

🔗

template<class charT = char, class traits = char_traits<charT>, class Allocator = allocator<charT>> constexpr basic_string<charT, traits, Allocator> to_string(charT zero = charT('0'), charT one = charT('1')) const;

41

#

Effects: Constructs a string object of the appropriate type and initializes it to a string of length N characters.

Each character is determined by the value of its corresponding bit position in*this.

Character position N - 1 corresponds to bit position zero.

Subsequent decreasing character positions correspond to increasing bit positions.

Bit value zero becomes the character zero, bit value one becomes the characterone.

42

#

Returns: The created object.

🔗

constexpr size_t count() const noexcept;

43

#

Returns: A count of the number of bits set in*this.

🔗

constexpr size_t size() const noexcept;

44

#

Returns: N.

🔗

constexpr bool operator==(const bitset& rhs) const noexcept;

45

#

Returns: true if the value of each bit in*this equals the value of the corresponding bit in rhs.

🔗

constexpr bool test(size_t pos) const;

46

#

Returns: true if the bit at position pos in*this has the value one.

47

#

Throws: out_of_range if pos does not correspond to a valid bit position.

🔗

constexpr bool all() const noexcept;

48

#

Returns: count() == size().

🔗

constexpr bool any() const noexcept;

49

#

Returns: count() != 0.

🔗

constexpr bool none() const noexcept;

50

#

Returns: count() == 0.