23 General utilities library [utilities]

23.9 Bitsets [bitset]

23.9.2 Class template bitset [template.bitset]

23.9.2.2 bitset members [bitset.members]

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

Effects: Очищает каждый бит, *this для которогоrhs очищен соответствующий бит , и оставляет все остальные биты без изменений.

Returns: *this.

bitset<N>& operator|=(const bitset<N>& rhs) noexcept;

Effects: Устанавливает каждый бит, *this для которого установлен соответствующий битrhs , и оставляет все остальные биты неизменными.

Returns: *this.

bitset<N>& operator^=(const bitset<N>& rhs) noexcept;

Effects: Включает каждый бит, *this для которого установлен соответствующий битrhs , и оставляет все остальные биты неизменными.

Returns: *this.

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

Effects: Заменяет каждый бит в положении ,I в *this с величиной , определенной следующим образом :

  • ЕслиI < posновое значение равно нулю;

  • ЕслиI >= posновое значение - это предыдущее значение бита в позицииI - pos.

Returns: *this.

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

Effects: Заменяет каждый бит в положении ,I в *this с величиной , определенной следующим образом :

  • Еслиpos >= N - Iновое значение равно нулю;

  • Еслиpos < N - Iновое значение - это предыдущее значение бита в позицииI + pos.

Returns: *this.

bitset<N>& set() noexcept;

Effects: Устанавливает все биты *this.

Returns: *this.

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

Throws: out_­of_­range еслиpos не соответствует действительной битовой позиции.

Effects: Сохраняет новое значение в бите в положенииpos в *this. Еслиval не ноль, сохраненное значение равно единице, в противном случае - нулю.

Returns: *this.

bitset<N>& reset() noexcept;

Effects: Сбрасывает все биты *this.

Returns: *this.

bitset<N>& reset(size_t pos);

Throws: out_­of_­range еслиpos не соответствует действительной битовой позиции.

Effects: Сброс бита в позицииpos в *this.

Returns: *this.

bitset<N> operator~() const noexcept;

Effects: Создает объектx класса bitset<N> и инициализирует его с помощью *this.

Returns: x.flip().

bitset<N>& flip() noexcept;

Effects: Включает все биты *this.

Returns: *this.

bitset<N>& flip(size_t pos);

Throws: out_­of_­range еслиpos не соответствует действительной битовой позиции.

Effects: Переключает бит в позицииpos в *this.

Returns: *this.

unsigned long to_ulong() const;

Throws: overflow_­error если целочисленное значение,x соответствующее битам в, *this не может быть представлено как тип unsigned long.

Returns: x.

unsigned long long to_ullong() const;

Throws: overflow_­error если целочисленное значение,x соответствующее битам в, *this не может быть представлено как тип unsigned long long.

Returns: x.

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

Effects: Создает строковый объект соответствующего типа и инициализирует его строкой из длинныхN символов. Каждый символ определяется значением соответствующей ему битовой позиции в *this. Позиция символаN - 1 соответствует нулевой позиции бита. Последующие уменьшающиеся позиции символов соответствуют увеличивающимся позициям битов. Нулевоеzeroбитовое значение становится символом , битовое значение 1 становится символом one.

Returns: Созданный объект.

size_t count() const noexcept;

Returns: Подсчет количества установленных битов *this.

constexpr size_t size() const noexcept;

Returns: N.

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

Returns: true если значение каждого бита в *this равно значению соответствующего бита вrhs.

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

Returns: true если !(*this == rhs).

bool test(size_t pos) const;

Throws: out_­of_­range еслиpos не соответствует действительной битовой позиции.

Returns: true если бит в позицииpos in *this имеет значение один.

bool all() const noexcept;

Returns:count() == size().

bool any() const noexcept;

Returns:count() != 0.

bool none() const noexcept;

Returns:count() == 0.

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

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

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

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

constexpr bool operator[](size_t pos) const;

Requires: pos действительны.

Returns: true если бит в позицииpos in*this имеет значение один, иначеfalse.

Throws: Ничего такого.

bitset<N>::reference operator[](size_t pos);

Requires: pos действительны.

Returns: Объект типа bitset<N>​::​reference таким образом, что (*this)[pos] == this->test(pos), и такое , что (*this)[pos] = val эквивалентно this->set(pos, val).

Throws: Ничего такого.

Remarks: С целью определения наличия a data raceлюбой доступ или обновление через результирующую ссылку потенциально обращается или модифицирует, соответственно, весь базовый битовый набор.