Files
cppdraft_translate/cppdraft/bitset/cons.md
2025-10-25 03:02:53 +03:00

117 lines
3.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[bitset.cons]
# 22 General utilities library [[utilities]](./#utilities)
## 22.9 Bitsets [[bitset]](bitset#cons)
### 22.9.2 Class template bitset [[template.bitset]](template.bitset#bitset.cons)
#### 22.9.2.2 Constructors [bitset.cons]
[🔗](#lib:bitset,constructor)
`constexpr bitset() noexcept;
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10533)
*Effects*: Initializes all bits in *this to zero[.](#1.sentence-1)
[🔗](#lib:bitset,constructor_)
`constexpr bitset(unsigned long long val) noexcept;
`
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10544)
*Effects*: Initializes the first M bit positions to the corresponding bit
values in val[.](#2.sentence-1)
M is the smaller of N and the number of bits in the value
representation ([[basic.types.general]](basic.types.general#term.object.representation "6.9.1General")) of unsigned long long[.](#2.sentence-2)
If M < N, the remaining bit positions are initialized to zero[.](#2.sentence-3)
[🔗](#lib:bitset,constructor__)
`template<class charT, class traits, class Allocator>
constexpr explicit bitset(
const basic_string<charT, traits, Allocator>& 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,
charT zero = charT('0'),
charT one = charT('1'));
template<class charT, class traits>
constexpr explicit bitset(
basic_string_view<charT, traits> str,
typename basic_string_view<charT, traits>::size_type pos = 0,
typename basic_string_view<charT, traits>::size_type n
= basic_string_view<charT, traits>::npos,
charT zero = charT('0'),
charT one = charT('1'));
`
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10574)
*Effects*: Determines the effective lengthrlen of the initializing string as the smaller ofn andstr.size() - pos[.](#3.sentence-1)
Initializes the first M bit
positions to values determined from the corresponding characters in the stringstr[.](#3.sentence-2)
M is the smaller of N and rlen[.](#3.sentence-3)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10585)
An element of the constructed object has value zero if the
corresponding character in str, beginning at positionpos, iszero[.](#4.sentence-1)
Otherwise, the element has the value one[.](#4.sentence-2)
Character position pos + M - 1 corresponds to bit position zero[.](#4.sentence-3)
Subsequent decreasing character positions correspond to increasing bit positions[.](#4.sentence-4)
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10594)
If M < N, remaining bit positions are initialized to zero[.](#5.sentence-1)
[6](#6)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10597)
The function uses traits::eq to compare the character values[.](#6.sentence-1)
[7](#7)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10601)
*Throws*: out_of_range if pos > str.size() orinvalid_argument if any of
the rlen characters in str beginning at position pos is other than zero or one[.](#7.sentence-1)
[🔗](#lib:bitset,constructor___)
`template<class charT>
constexpr explicit bitset(
const charT* str,
typename basic_string_view<charT>::size_type n = basic_string_view<charT>::npos,
charT zero = charT('0'),
charT one = charT('1'));
`
[8](#8)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L10623)
*Effects*: As if by:bitset(n == basic_string_view<charT>::npos ? basic_string_view<charT>(str): basic_string_view<charT>(str, n), 0, n, zero, one)