基于C++入门第四版(即,pp105),
bitset<32> bitvec;
bitvec[0].flip(); // reverses the first bit.我的问题是,为什么第二行行得通?基于
http://www.cplusplus.com/reference/stl/bitset/operator[]/
bool operator[] ( size_t pos ) const;
reference operator[] ( size_t pos );如何在bool或reference上使用bitset::flit?
谢谢
发布于 2010-11-24 13:59:46
operator[]返回的" reference“不是C++引用,它是一个具有flip()方法的特殊代理类。
伪代码:
class bitset
{
class reference
{
public:
reference& flip()
{
bitset_.flip(pos_);
return *this;
}
reference(bitset& obj)
: bitset_(obj), pos_(pos)
{
}
bitset& bitset_;
size_t pos_;
};
reference operator[](size_t pos)
{
return reference(*this, pos);
}
}有关详细信息,请参阅您的STL实现的源代码。
发布于 2010-11-24 13:40:34
它返回一个具有flip方法的bitset<32>::reference实例。更明确地说:
bitset<32> bs;
bitset<32>::reference first = bs[0];
first.flip();https://stackoverflow.com/questions/4263779
复制相似问题