成员 |
描述 |
引用
|
充当单个位的引用的代理类。它包含一个赋值运算符,一个转换为bool的转换,一个operator~,以及一个成员函数flip。它仅作为bitset的operator[]的辅助类存在。也就是说,它支持表达式x = b[i], b[i] = x, b[i] = b[j], x = ~b[i],以及b[i].flip()。(其中b是一个bitset和x是一个bool.)
|
bitset(unsigned long val)
|
从无符号长整数转换。构造一个位集,将前min(N, sizeof(unsigned long) * CHAR_BIT)位初始化为val中相应的位,以及所有其他位(如果有)初始化为零。 |
template<class Char, class Traits, class Alloc>
explicit
bitset(const basic_string<Char,Traits,Alloc>& s,
size_t pos = 0,
size_t n =
basic_string<Char,Traits,Alloc>::npos)
|
从字符串转换。构造一个位集,将前M位初始化为s中相应的字符,其中M定义为min(N, min(s.size() - pos, n))。请注意,s中最高的字符位置(而不是最低的)对应于最低有效位。也就是说,字符位置pos + M - 1 - i对应于位i。因此,例如,bitset(string("1101"))与bitset(13ul)相同。此函数抛出out_of_range如果pos > s.size(),以及invalid_argument如果用于初始化位的任何字符不是0或1.
|
bitset& operator&=(const bitset&)
|
按位与。 |
bitset& operator|=(const bitset&)
|
按位或。 |
bitset& operator^=(const bitset&)
|
按位异或。 |
bitset& operator<<=(size_t n)
|
左移,其中位0被认为是最不重要的位。位i取位i - n之前的值,或者如果不存在这样的位则为零。 |
bitset& operator>>=(size_t n)
|
右移,其中位0被认为是最不重要的位。位i取位i + n之前的值,或者如果不存在这样的位则为零。 |
bitset operator<<(size_t n) const
|
返回一个*this的副本,左移了n位。请注意,表达式b << n等效于构造一个b的临时副本,然后使用operator<<=.
|
bitset operator>>(size_t n) const
|
返回一个*this右移了n位。请注意,表达式b >> n等效于构造一个b的临时副本,然后使用operator>>=.
|
bitset& set()
|
设置每一位。 |
bitset& flip()
|
翻转每一位的值。 |
bitset operator~() const
|
返回一个*this,所有位都被翻转。 |
bitset& reset()
|
清除每一位。 |
bitset& set(size_t n, int val = 1)
|
设置位n如果val非零,则清除位n如果val为零。抛出out_of_range如果n >= N.
|
bitset& reset(size_t n)
|
清除位n。抛出out_of_range如果n >= N.
|
bitset flip(size_t n)
|
翻转位n。抛出out_of_range如果n >= N.
|
size_t size() const
|
返回N.
|
size_t count() const
|
返回已设置的位数。 |
bool any() const
|
返回true如果任何位被设置。 |
bool none() const
|
返回true如果没有任何位被设置。 |
bool test(size_t n) const
|
返回true如果位n被设置。抛出out_of_range如果n >= N.
|
reference operator[](size_t n)
|
返回一个引用到位n。请注意,引用是一个带有赋值运算符和转换为bool的代理类,它允许您使用operator[]进行赋值。也就是说,您可以同时编写x = b[n]和b[n] = x.
|
bool operator[](size_t n) const
|
返回true如果位n被设置。 |
unsigned long to_ulong() const
|
返回一个unsigned long,对应于*this。抛出overflow_error如果无法将*this表示为unsigned long。(也就是说,如果N大于unsigned long中的位数,并且如果任何高位被设置。 |
template<class Char, class Traits, class Alloc>
basic_string<Char,Traits,Alloc> to_string() const
|
返回*this:每个字符是1如果相应的位被设置,则为0如果它没有。通常,字符位置i对应于位位置N - 1 - i。请注意,此成员函数依赖于两个尚未普遍使用的语言特性,即成员模板和显式函数模板参数规范;对于不支持这些特性的编译器,此成员函数被禁用。另请注意,调用此成员函数的语法有些繁琐。要将一个位集b转换为普通字符串,您必须编写b.template to_string<char, char_traits<char>, allocator<char> >()
|
bitset operator&(const bitset&, const bitset&)
|
两个位集的按位与。这是一个全局函数,而不是成员函数。请注意,表达式b1 & b2等效于创建b1的一个临时副本,使用operator&=,并返回临时副本。 |
bitset operator|(const bitset&, const bitset&)
|
两个位集的按位或。这是一个全局函数,而不是成员函数。请注意,表达式b1 | b2等效于创建b1的一个临时副本,使用operator|=,并返回临时副本。 |
bitset operator^(const bitset&, const bitset&)
|
两个位集的按位异或。这是一个全局函数,而不是成员函数。请注意,表达式b1 ^ b2等效于创建b1的一个临时副本,使用operator^=,并返回临时副本。 |
template <class Char, class Traits,
size_t N>
basic_istream<Char, Traits>&
operator>>(basic_istream<Char,Traits>& is,
bitset<N>& x)
|
从输入流中提取一个bitset从输入流中提取。此函数首先跳过空格,然后从输入流中提取最多N个字符。它在成功提取了N个字符,或提取失败,或看到一个不是1的字符(在这种情况下,它不会提取该字符)时停止。然后,它以与初始化bitset的方式相同的方式将值分配给bitset。因此,例如,如果输入流包含字符"1100abc",它将值12ul分配给bitset,并且从输入流读取的下一个字符将是a.
|
template <class Char, class Traits,
size_t N>
basic_ostream<Char,Traits>&
operator>>(basic_ostream<Char,Traits>& os,
const bitset<N>& x)
|
输出一个bitset到输出流。此函数的行为就像将bitset转换为字符串,然后将该字符串写入输出流。也就是说,它等效于os << x.template to_string<Char,Traits,allocator<Char> >()
|