QBitArray类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QBitArray类参考

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

#include <qbitarray.h>

继承了QByteArray

所有成员函数的列表。

公有成员

Related Functions

  • QBitArray operator& ( const QBitArray & a1, const QBitArray & a2 )
  • QBitArray operator| ( const QBitArray & a1, const QBitArray & a2 )
  • QBitArray operator^ ( const QBitArray & a1, const QBitArray & a2 )
  • QDataStream & operator<< ( QDataStream & s, const QBitArray & 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 ( uint size )

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

也可以参考fill()。

QBitArray::QBitArray ( const QBitArray & a )

构造一个a浅复制

bool QBitArray::at ( uint index ) const

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

也可以参考operator[]()。

void QBitArray::clearBit ( uint index )

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

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

QBitArray QBitArray::copy () const

返回一个位数组的深复制

也可以参考detach()。

void QBitArray::detach () [虚]

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

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

也可以参考copy()。

QMemArray中重新实现的。

bool QBitArray::fill ( bool v, int size = -1 )

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

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

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

也可以参考resize()。

QBitArray & QBitArray::operator&= ( const QBitArray & 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= ( const QBitArray & a )

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

QBitVal QBitArray::operator[] ( int index )

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

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

实例:

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

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

也可以参考at()。

bool QBitArray::operator[] ( int index ) const

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

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

QBitArray & QBitArray::operator^= ( const QBitArray & 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|= ( const QBitArray & 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 ( uint size )

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

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

也可以参考size()。

void QBitArray::setBit ( uint index, bool value )

设置index位置的位为value

等同于:

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

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

void QBitArray::setBit ( uint index )

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

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

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

uint QBitArray::size () const

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

也可以参考resize()。

bool QBitArray::testBit ( uint index ) const

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

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

bool QBitArray::toggleBit ( uint index )

切换index位置的位。

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

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


相关函数

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

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

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

QDataStream & operator<< ( QDataStream & s, const QBitArray & a )

把位数组a写到流s中。

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

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

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

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

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

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

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

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

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

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


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版