最終更新日時(UTC):
が更新

履歴 編集

function
<bitset>

std::bitset::コンストラクタ

bitset();                                          // (1) C++03
constexpr bitset() noexcept;                       // (1) C++11

bitset(unsigned long val);                         // (2) C++03
constexpr bitset(unsigned long long val) noexcept; // (2) C++11

template <class CharT, class Traits, class Allocator>
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);  // (3) C++03
template <class CharT, class Traits, class Allocator>
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'));                          // (3) C++11
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'));                          // (3) C++23

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'));                          // (4) C++26

template <class CharT>
explicit bitset(
  const CharT* str,
  typename basic_string<CharT>::size_type n = basic_string<CharT>::npos,
  CharT zero = CharT('0'),
  CharT one = CharT('1'));                          // (5) C++11
template <class CharT>
constexpr explicit bitset(
  const CharT* str,
  typename basic_string<CharT>::size_type n = basic_string<CharT>::npos,
  CharT zero = CharT('0'),
  CharT one = CharT('1'));                          // (5) C++23
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'));                          // (5) C++26

bitsetオブジェクトの構築

  • (1) : デフォルトコンストラクタ
  • (2) : 整数値を受け取るコンストラクタ
  • (3) : '0''1'の文字で構成されるbasic_string文字列からビット列を構築する
  • (4) : '0''1'の文字で構成されるbasic_string_viewオブジェクトからビット列を構築する
  • (5) : '0''1'の文字で構成される文字配列からビット列を構築する

要件

  • (3), (4) : pos <= str.size()

効果

  • (1) : 全てのビットを0に初期化する。
  • (2) : 整数値valでビット列を初期化する。bitsetクラスのテンプレートパラメータNvalのビット数のうち、小さい方の大きさで表現可能なビット列となる。クラステンプレートパラメータNよりもvalのビット数の方が小さい場合は、残りのビットを0で初期化する。
  • (3), (4) : 文字列strでビット列を初期化する。
    • ビット列として扱う文字列はstrn文字目以降である。n == nposの場合はstrの全文字列を使用する。対象となる文字列範囲をrstrとする。
    • C++03 : 文字列rstrに含まれる文字CharT('0')をビット値0、文字CharT('1')をビット値1と見なし、対応する値でビット列を構築する。
    • C++11 : 文字列rstrに含まれる文字zeroをビット値0、文字oneをビット値1と見なし、対応する値でビット列を構築する。
    • クラステンプレートパラメータNと文字列rstrの長さのうち、小さい方の大きさで表現可能なビット列となる。クラステンプレートパラメータNよりも文字列rstrの長さの方が小さい場合は、残りのビットを0で初期化する。
  • (5) : 以下のように初期化する:

bitset(
  n == basic_string<CharT>::npos
  ? basic_string<CharT>(str)
  : basic_string<CharT>(str, n), 0, n, zero, one)

例外

  • (3), (4) : pos > str.size()の場合、out_of_range例外を送出する。
    • C++03 : str'0''1'以外の文字が含まれていた場合、invalid_argument例外を送出する。
    • C++11 : strzeroone以外の文字が含まれていた場合、invalid_argument例外を送出する。
  • (5) : strzeroone以外の文字が含まれていた場合、invalid_argument例外を送出する。

#include <iostream>
#include <bitset>

int main()
{
  // (1) デフォルト構築
  {
    std::bitset<4> bs;
    std::cout << "(1) : " << bs << std::endl;
  }

  // (2) 整数値から構築
  {
    std::bitset<4> bs(10uL);
    std::cout << "(2) : " << bs << std::endl;
  }

  // (3) stringから構築
  {
    std::bitset<4> bs(std::string("1010"));
    std::cout << "(3) : " << bs << std::endl;
  }

  // (4) string_viewから構築
  {
    std::bitset<4> bs{std::string_view("1010")};
    std::cout << "(4) : " << bs << std::endl;
  }

  // (5) 文字配列から構築
  {
    std::bitset<4> bs("1010");
    std::cout << "(5) : " << bs << std::endl;
  }
}

出力

(1) : 0000
(2) : 1010
(3) : 1010
(4) : 1010
(5) : 1010

処理系

参照