函数
<bitset>

std::bitset 运算符

成员函数
bitset& operator&= (const bitset& rhs);bitset& operator|= (const bitset& rhs);bitset& operator^= (const bitset& rhs);bitset& operator<<= (size_t pos);bitset& operator>>= (size_t pos);bitset operator~() const;bitset operator<<(size_t pos) const;bitset operator>>(size_t pos) const;bool operator== (const bitset& rhs) const;bool operator!= (const bitset& rhs) const;
非成员函数
template<size_t N>  bitset<N> operator& (const bitset<N>& lhs, const bitset<N>& rhs);template<size_t N>  bitset<N> operator| (const bitset<N>& lhs, const bitset<N>& rhs);template<size_t N>  bitset<N> operator^ (const bitset<N>& lhs, const bitset<N>& rhs);
iostream 插入器/提取器
template<class charT, class traits, size_t N>  basic_istream<charT, traits>&    operator>> (basic_istream<charT,traits>& is, bitset<N>& rhs);template<class charT, class traits, size_t N>  basic_ostream<charT, traits>&    operator<< (basic_ostream<charT,traits>& os, const bitset<N>& rhs);
成员函数
bitset& operator&= (const bitset& rhs) noexcept;bitset& operator|= (const bitset& rhs) noexcept;bitset& operator^= (const bitset& rhs) noexcept;bitset& operator<<= (size_t pos) noexcept;bitset& operator>>= (size_t pos) noexcept;bitset operator~() const noexcept;bitset operator<<(size_t pos) const noexcept;bitset operator>>(size_t pos) const noexcept;bool operator== (const bitset& rhs) const noexcept;bool operator!= (const bitset& rhs) const noexcept;
非成员函数
template<size_t N>  bitset<N> operator& (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;template<size_t N>  bitset<N> operator| (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;template<size_t N>  bitset<N> operator^ (const bitset<N>& lhs, const bitset<N>& rhs) noexcept;
iostream 插入器/提取器
template<class charT, class traits, size_t N>  basic_istream<charT, traits>&    operator>> (basic_istream<charT,traits>& is, bitset<N>& rhs);template<class charT, class traits, size_t N>  basic_ostream<charT, traits>&    operator<< (basic_ostream<charT,traits>& os, const bitset<N>& rhs);
Bitset 运算符
使用 bitset 的内容执行相应的位运算。

参数

lhs
左侧 bitset 对象(对于非成员函数)。
rhs
右侧 bitset 对象。
左侧和右侧的 bitset 对象必须具有相同的位数(即,具有相同的类模板参数 N)。
pos
要移位的位数。
is,os
从中分别提取或插入 bitset 对象的 basic_istreambasic_ostream 对象。插入/提取 bitset 的格式是(已适当拓宽的)'0''1' 字符序列。

返回值

如果为引用:左侧对象(*thisisos)。
否则:操作的结果(对于关系运算符,是 bitset 对象,或 truefalse)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// bitset operators
#include <iostream>       // std::cout
#include <string>         // std::string
#include <bitset>         // std::bitset

int main ()
{
  std::bitset<4> foo (std::string("1001"));
  std::bitset<4> bar (std::string("0011"));

  std::cout << (foo^=bar) << '\n';       // 1010 (XOR,assign)
  std::cout << (foo&=bar) << '\n';       // 0010 (AND,assign)
  std::cout << (foo|=bar) << '\n';       // 0011 (OR,assign)

  std::cout << (foo<<=2) << '\n';        // 1100 (SHL,assign)
  std::cout << (foo>>=1) << '\n';        // 0110 (SHR,assign)

  std::cout << (~bar) << '\n';           // 1100 (NOT)
  std::cout << (bar<<1) << '\n';         // 0110 (SHL)
  std::cout << (bar>>1) << '\n';         // 0001 (SHR)

  std::cout << (foo==bar) << '\n';       // false (0110==0011)
  std::cout << (foo!=bar) << '\n';       // true  (0110!=0011)

  std::cout << (foo&bar) << '\n';        // 0010
  std::cout << (foo|bar) << '\n';        // 0111
  std::cout << (foo^bar) << '\n';        // 0101

  return 0;
}

输出

1010
0010
0011
1100
0110
1100
0110
0001
0
1
0010
0111
0101


数据竞争

访问操作中涉及的所有 bitset 对象中的所有位,并且(如果是复合赋值)也修改它们。

异常安全

在发生异常时,流插入器/提取器会使所有对象保持有效状态(基本保证)。
其他操作从不抛出异常(无异常保证)。

另见