返回介绍

QBitArray类

发布于 2019-10-04 14:58:20 字数 7343 浏览 878 评论 0 收藏 0

QBitArray类提供了一个位数组。 详情请见……

#include <qbitarray.h>

继承了QByteArray。

所有成员函数的列表。

公有成员

  • QBitArray ()
  • QBitArray ( uintsize )
  • QBitArray ( constQBitArray&a )
  • QBitArray & operator= ( constQBitArray&a )
  • uint size () const
  • bool resize ( uintsize )
  • bool fill ( boolv, intsize = -1 )
  • virtual void detach ()
  • QBitArray copy () const
  • bool testBit ( uintindex ) const
  • void setBit ( uintindex )
  • void setBit ( uintindex, boolvalue )
  • void clearBit ( uintindex )
  • bool toggleBit ( uintindex )
  • bool at ( uintindex ) const
  • QBitVal operator[] ( intindex )
  • bool operator[] ( intindex ) const
  • QBitArray & operator&= ( constQBitArray&a )
  • QBitArray & operator|= ( constQBitArray&a )
  • QBitArray & operator^= ( constQBitArray&a )
  • QBitArray operator~ () const

Related Functions

  • QBitArray operator& ( constQBitArray&a1, constQBitArray&a2 )
  • QBitArray operator| ( constQBitArray&a1, constQBitArray&a2 )
  • QBitArray operator^ ( constQBitArray&a1, constQBitArray&a2 )
  • QDataStream & operator<< ( QDataStream&s, constQBitArray&a )
  • QDataStream & operator>> ( QDataStream&s, QBitArray&a )

详细描述

QBitArray类提供了一个位数组。

因为QBitArray是一个QMemArray,它通过一个引用计数使用了明显共享。

QBitArray是一个特殊的字节数组,它可以访问单独的位并且可以在整个位数组上执行为操作(AND、OR、XOR和NOT)。

位可以通过函数setBit()和clearBit()来操作,但是它也可以使用索引[]操作符来测试和设置单独的位。[]操作符比setBit()和clearBit()慢一些,因为在实现单独位分配中需要一些技巧。

实例:

    QBitArray a(3);
    a.setBit( 0 );
    a.clearBit( 1 );
    a.setBit( 2 );                      // a = [1 0 1]

    QBitArray b(3);
    b[0] = 1;
    b[1] = 1;
    b[2] = 0;                           // b = [1 1 0]

    QBitArray c;
    c = ~a & b;                         // c = [0 1 0]
  

当QBitArray被构造时,位没有被初始化。使用fill()可以设置所有的位为0或1。数组可以用resize()来重新定义大小并且用copy()来复制。位可以用setBit()来设置并且用clearBit()来清空。位可以用toggleBit()来切换。一个位的值可以用testBit()和at()来获得。

QBitArray支持&(AND)、|(OR)、^(XOR)和~(NOT)操作符。

也可以参考集合类、隐含和明显共享类和非GUI类。


成员函数文档

QBitArray::QBitArray ()

构造一个空的位数组。

QBitArray::QBitArray ( uintsize )

构造一个size位的位数组。位没有被初始化。

也可以参考fill()。

QBitArray::QBitArray ( constQBitArray&a )

构造一个a的浅复制。

bool QBitArray::at ( uintindex ) const

返回index位置的位的值(0或1)。

也可以参考operator[]()。

void QBitArray::clearBit ( uintindex )

清空index位置的位(设置它为0)。

也可以参考setBit()和toggleBit()。

QBitArray QBitArray::copy () const

返回一个位数组的深复制。

也可以参考detach()。

void QBitArray::detach () [虚]

从共享位数组数据中分离并且并且确认这个位数组是数据的唯一引用。

如果是多重位数组共享公有数据,这个位数组引用计数减一并且得到一个数据的复制。如果只是一个单独的引用将没有任何操作。

也可以参考copy()。

从QMemArray中重新实现的。

bool QBitArray::fill ( boolv, intsize = -1 )

v填充位数组(如果v为真,填1,或者如果v为假,填0)。

如果size为非负数,fill()会重新定义位数组的大小为size

如果size为非负数并且位数组没有能被重新定义大小,返回假,否则返回真。

也可以参考resize()。

QBitArray& QBitArray::operator&= ( constQBitArray&a )

对这个位数组和a的所有位进行AND操作。返回这个位数组的引用。

如果两个数组大小不同,对于缺少的位,AND操作将使用0,就像下面的例子所描述的:

    QBitArray a( 3 ), b( 2 );
    a[0] = 1;  a[1] = 0;  a[2] = 1;     // a = [1 0 1]
    b[0] = 1;  b[1] = 0;                // b = [1 0]
    a &= b;                             // a = [1 0 0]
  

也可以参考operator|=()、operator^=()和operator~()。

QBitArray& QBitArray::operator= ( constQBitArray&a )

分配一个a的浅复制给这个位数组并且返回这个位数组的引用。

QBitVal QBitArray::operator[] ( intindex )

为位数组实现了[]操作符。

返回到QBitVal是一个上下文对象。它使得得到和设置index位置的单个位成为可能。

实例:

    QBitArray a( 3 );
    a[0] = 0;
    a[1] = 1;
    a[2] = a[0] ^ a[1];
  

函数testBit()、setBit()和clearBit()更快一些。

也可以参考at()。

bool QBitArray::operator[] ( intindex ) const

这是一个重载成员函数,提供了方便。它的行为和上面的函数基本一致。

为常量位数组实现了[]操作符。

QBitArray& QBitArray::operator^= ( constQBitArray&a )

对这个位数组和a的所有位做XOR操作。返回这个数组的引用。

结果的长度为两个数组中比较长的长度,比较短的数组缺少的位用0。

实例:

    QBitArray a( 3 ), b( 2 );
    a[0] = 1;  a[1] = 0;  a[2] = 1;     // a = [1 0 1]
    b[0] = 1;  b[1] = 0;                // b = [1 0]
    a ^= b;                             // a = [0 0 1]
  

也可以参考operator&=()、operator|=()和operator~()。

QBitArray& QBitArray::operator|= ( constQBitArray&a )

对这个位数组和a的所有位做OR操作。返回这个数组的引用。

结果的长度为两个数组中比较长的长度,比较短的数组缺少的位用0。

实例:

    QBitArray a( 3 ), b( 2 );
    a[0] = 1;  a[1] = 0;  a[2] = 1;     // a = [1 0 1]
    b[0] = 1;  b[1] = 0;                // b = [1 0]
    a |= b;                             // a = [1 0 1]
  

也可以参考operator&=()、operator^=()和operator~()。

QBitArray QBitArray::operator~ () const

返回这个位数组所有位取反后的位数组。

实例:

    QBitArray a( 3 ), b;
    a[0] = 1;  a[1] = 0; a[2] = 1;      // a = [1 0 1]
    b = ~a;                             // b = [0 1 0]
  

bool QBitArray::resize ( uintsize )

重新定义位数组的大小为size位并且如果位数组可以重新定义大小,返回真,否则返回假。

如果数组被扩大了,新的位被设置为0。

也可以参考size()。

void QBitArray::setBit ( uintindex, boolvalue )

设置index位置的位为value

等同于:

    if ( value )
        setBit( index );
    else
        clearBit( index );
  

也可以参考clearBit()和toggleBit()。

void QBitArray::setBit ( uintindex )

这是一个重载成员函数,提供了方便。它的行为和上面的函数基本一致。

设置index位置的位(设置它为1)。

也可以参考clearBit()和toggleBit()。

uint QBitArray::size () const

返回位数组的大小(位的个数)。

也可以参考resize()。

bool QBitArray::testBit ( uintindex ) const

如果index位置的位已经被设置,比如是1,就返回真。

也可以参考setBit()和clearBit()。

bool QBitArray::toggleBit ( uintindex )

切换index位置的位。

如果以前的值为0,新值就是1。如果以前的指为1,新值就为0。

也可以参考setBit()和clearBit()。


相关函数

QBitArray operator& ( constQBitArray&a1, constQBitArray&a2 )

返回位数组a1a2的AND操作的结果。

也可以参考QBitArray::operator&=()。

QDataStream& operator<< ( QDataStream&s, constQBitArray&a )

把位数组a写到流s中。

也可以参考QDataStream操作符的格式。

QDataStream& operator>> ( QDataStream&s, QBitArray&a )

从流s中读取一个位数组到a中。

也可以参考QDataStream操作符的格式。

QBitArray operator^ ( constQBitArray&a1, constQBitArray&a2 )

返回位数组a1a2的XOR操作的结果。

也可以参考QBitArray::operator^()。

QBitArray operator| ( constQBitArray&a1, constQBitArray&a2 )

返回位数组a1a2的OR操作的结果。

也可以参考QBitArray::operator|=()。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文