Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

bitset::bitset

公众成员函数  <bitset>

C++98; default (1)
bitset();
integer value (2)
bitset (unsigned long val);
string (3)
template<class charT, class traits, class Alloc>
  explicit bitset (const basic_string<charT,traits,Alloc>& str,
    typename basic_string<charT,traits,Alloc>::size_type pos = 0,
    typename basic_string<charT,traits,Alloc>::size_type n =
      basic_string<charT,traits,Alloc>::npos);
C++11; default (1)
constexpr bitset() noexcept;
integer value (2)
constexpr bitset (unsigned long long val) noexcept;
string (3)
template <class charT, class traits, class Alloc>
  explicit bitset (const basic_string<charT,traits,Alloc>& str,
    typename basic_string<charT,traits,Alloc>::size_type pos = 0,
    typename basic_string<charT,traits,Alloc>::size_type n =
      basic_string<charT,traits,Alloc>::npos,
    charT zero = charT('0'), charT one = charT('1'));
C-string (4)
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'));


构建bitset对象
构造一个bitset对象。

(1)默认构造函数
对象初始化为0。

(2)从整数值初始化
用val的bit值初始化对象:

(3)从string或(4) C-string初始化
使用str中的0和/或1序列初始化构造的bitset对象的前n位。

注意,无论使用什么构造函数,bitset对象的大小都是固定的(由它们的类模板实参决定):那些没有由构造函数显式设置的bit的初始值为0。

☲  参数


val
其bit被复制到bitset位置的整型值。
— 如果val的值表示大于bitset的大小,则只考虑val的最低有效位
— 如果val的值小于bitset的大小,剩余的位将初始化为0。

str
c++98: 一个basic_string对象,其内容用于初始化bitset对象:
     构造函数解析从pos开始最多读取n个字符的字符串,将字符值'0'和'1'分别解释为0和1。
    注意,最低有效位由最后读取的字符表示(而不是第一个字符);
    因此,从最右的字符读取第一个位,然后从右到左使用该字符之前的字符。
    如果该序列小于bitset大小,则剩余的位初始化为0。

c++11: basic_string或C-string,其内容用于初始化bitset对象:
    构造函数最多解析读取的字符串((3)从pos 开始),将参数0和参数1指定的字符值分别解释为0和1。
    注意,最低有效位由最后读取的字符表示(而不是第一个字符);
    因此,从最右的字符读取第一个位,然后从右到左使用该字符之前的字符。
    如果该序列小于bitset大小,则剩余的位初始化为0。

pos
basic_string中要读取和解释的第一个字符。
如果大于str的长度,则抛出out_of_range异常。

n
要读取的字符数。任何大于bitset size的值(包括npos)都相当于精确指定bitset size。

zero, one
表示0和1的字符值。

☣  示例



// constructing bitsets
#include <iostream>       // std::cout
#include <string>         // std::string
#include <bitset>         // std::bitset

int main ()
{
  std::bitset<16> foo;
  std::bitset<16> bar (0xfa2);
  std::bitset<16> baz (std::string("0101111001"));

  std::cout << "foo: " << foo << '\n';
  std::cout << "bar: " << bar << '\n';
  std::cout << "baz: " << baz << '\n';

  return 0;
}

输出:
foo: 0000000000000000
bar: 0000111110100010
baz: 0000000101111001

⇄ 数据竞争


构造函数(3)和(4)访问str中的字符.

☂ 异常安全性



默认构造函数(1)和整数值(2)的构造函数都不会抛出异常。
其他构造函数在抛出异常时不会产生副作用(强保证)。
如果pos > str.size()抛出out_of_range。

🍄  另请参阅



bitset::set 设置比特位 (函数模板)
bitset::reset 重置比特位(公众成员函数)
bitset::operator[] 访问比特位(公众成员函数)
bitset operators bitset 操作(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图