cpp/utility/bitset/operator at: Difference between revisions
From cppreference.com
the standard is a little vague, but I think that operator[] throws if the arg is invalid |
m {{p}} (for “paragraph”) gives lesser V offset. |
||
| (22 intermediate revisions by 9 users not shown) | |||
| Line 1: | Line 1: | ||
{{cpp/utility/bitset/title | operator[]}} | {{cpp/utility/bitset/title|operator[]}} | ||
{{cpp/utility/bitset/ | {{cpp/utility/bitset/}} | ||
{{ | {{begin}} | ||
{{ | {{|num=1| | ||
bool operator[]( size_t pos ) const; | bool operator[]( size_t pos ) const; | ||
}} | }} | ||
{{ | {{|num=2| | ||
reference operator[]( size_t pos ); | reference operator[]( size_t pos ); | ||
}} | }} | ||
{{ | {{end}} | ||
Accesses the bit at position {{ | Accesses the bit at position {{|pos}}. | ||
the value of the bit | |||
an object of type {{|std::bitset::reference}} that allows modification of the value. | |||
{{cpp|}} {{|}} | |||
===Parameters=== | ===Parameters=== | ||
{{ | {{begin}} | ||
{{ | {{|pos|position of the bit to return}} | ||
{{ | {{end}} | ||
===Return value=== | ===Return value=== | ||
1 | 1value of the requested bit | ||
2 | 2object of type {{|std::bitset::reference}}the bit | ||
. | |||
===Example=== | ===Example=== | ||
{{example | {{example | ||
|code= | |||
#include <iostream> | #include <iostream> | ||
int main() | int main() | ||
{ | { | ||
std::bitset<8> b1 | std::bitset<8> b142 | ||
for ( | |||
for (i = 0; i < b1.size(); ++i) | |||
std::cout << "b1[" << i << "]: " << b1[i] << '\n'; | std::cout << "b1[" << i << "]: " << b1[i] << '\n'; | ||
0; | |||
} | } | ||
|output= | |||
b1[0]: 0 | b1[0]: 0 | ||
b1[1]: 1 | b1[1]: 1 | ||
| Line 47: | Line 56: | ||
b1[6]: 0 | b1[6]: 0 | ||
b1[7]: 0 | b1[7]: 0 | ||
}} | }} | ||
===See also=== | ===See also=== | ||
{{ | {{|}} | ||
Latest revision as of 04:54, 28 March 2025
bool operator[]( std::size_t pos ) const;
|
(1) | (constexpr since C++11) |
reference operator[]( std::size_t pos );
|
(2) | (constexpr since C++23) |
Accesses the bit at position pos.
1) Returns the value of the bit.
2) Returns an object of type std::bitset::reference that allows modification of the value.
|
If |
(until C++26) |
|
If
|
(since C++26) |
Parameters
| pos | - | position of the bit to return |
Return value
1) The value of the requested bit.
2) An object of type std::bitset::reference, which allows writing to the requested bit.
Exceptions
Throws nothing.
Example
Run this code
#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
std::bitset<8> b1{0b00101010}; // binary literal for 42
for (std::size_t i = 0; i < b1.size(); ++i)
std::cout << "b1[" << i << "]: " << b1[i] << '\n';
b1[0] = true; // modifies the first bit through bitset::reference
std::cout << "After setting bit 0, b1 holds " << b1 << '\n';
}
Output:
b1[0]: 0
b1[1]: 1
b1[2]: 0
b1[3]: 1
b1[4]: 0
b1[5]: 1
b1[6]: 0
b1[7]: 0
After setting bit 0, b1 holds 00101011
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 11 | C++98 | 1. the description was missing in the C++ standard 2. there was only the non-const overload |
1. description added 2. added the const overload |
| LWG 907 | C++98 | the behavior of reading the bit at pos was equivalentto that of test(pos), but test() may throw exceptions
|
avoids mentioning test()
|
See also
| accesses specific bit (public member function) |