Namespaces
Variants

std::bitset<N>:: operator[]

From cppreference.net
Utilities library
bool operator [ ] ( std:: size_t pos ) const ;
(1) (constexpr since C++11)
reference operator [ ] ( std:: size_t pos ) ;
(2) (constexpr since C++23)

pos 위치의 비트에 접근합니다.

1) 비트의 값을 반환합니다.
2) 값을 수정할 수 있도록 허용하는 std::bitset::reference 타입의 객체를 반환합니다.

만약 pos < size ( ) false 인 경우, 동작은 정의되지 않습니다.

(C++26 이전)

만약 pos < size ( ) false 인 경우:

  • 구현이 hardened 된 경우, contract violation 이 발생합니다. 또한 계약 위반 핸들러가 "observe" 평가 의미론 하에 반환하는 경우, 동작은 정의되지 않습니다.
  • 구현이 hardened 되지 않은 경우, 동작은 정의되지 않습니다.
(C++26 이후)

목차

매개변수

pos - 반환할 비트의 위치

반환값

1) 요청된 비트의 값.
2) 요청된 비트에 쓰기를 허용하는 std::bitset::reference 타입의 객체.

예외

아무것도 던지지 않습니다.

예제

#include <bitset>
#include <cstddef>
#include <iostream>
int main()
{
    std::bitset<8> b1{0b00101010}; // 42에 대한 이진 리터럴
    for (std::size_t i = 0; i < b1.size(); ++i)
        std::cout << "b1[" << i << "]: " << b1[i] << '\n';
    b1[0] = true; // bitset::reference를 통해 첫 번째 비트 수정
    std::cout << "After setting bit 0, b1 holds " << b1 << '\n';
}

출력:

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

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 수정된 동작
LWG 11 C++98 1. C++ 표준에서 설명이 누락됨
2. 비 const 오버로드만 존재함
1. 설명 추가됨
2. const 오버로드 추가됨
LWG 907 C++98 pos 위치의 비트를 읽는 동작이
test(pos) 와 동등했으나, test() 는 예외를 발생시킬 수 있음
test() 에 대한 언급을 피함

참고 항목

특정 비트에 접근
(public member function)