QBitArray Class Reference

[QtCore module]

该QBitArray类提供了一组位。More…

Methods

  • __init__ (self)
  • __init__ (self, int size, bool value = False)
  • __init__ (self, QBitArray other)
  • bool at (self, int i)
  • clear (self)
  • clearBit (self, int i)
  • int count (self)
  • int count (self, bool on)
  • detach (self)
  • fill (self, bool val, int first, int last)
  • bool fill (self, bool value, int size = -1)
  • bool isDetached (self)
  • bool isEmpty (self)
  • bool isNull (self)
  • resize (self, int size)
  • setBit (self, int i)
  • setBit (self, int i, bool val)
  • int size (self)
  • swap (self, QBitArray other)
  • bool testBit (self, int i)
  • bool toggleBit (self, int i)
  • truncate (self, int pos)

Special Methods

  • QBitArray __and__ (self, QBitArray)
  • bool __eq__ (self, QBitArray a)
  • bool __getitem__ (self, int i)
  • int __hash__ (self)
  • QBitArray __iand__ (self, QBitArray)
  • QBitArray __invert__ (self)
  • QBitArray __ior__ (self, QBitArray)
  • QBitArray __ixor__ (self, QBitArray)
  • __len__ (self)
  • bool __ne__ (self, QBitArray a)
  • QBitArray __or__ (self, QBitArray)
  • QBitArray __xor__ (self, QBitArray)

Detailed Description

该QBitArray类提供了一组位。

一个QBitArray是一个数组,它可以访问各个位,并提供运营商(ANDORXORNOT对位的整个数组)的工作。它使用implicit sharing(复制上写的),以减少内存使用量,避免不必要的数据复制。

下面的代码创建一个包含200位的QBitArray初始化为False ( 0 ) :

  1. QBitArray ba(200);

要初始化位为True ,要么通过true作为第二个参数的构造函数,或调用fill( )以后。

QBitArray使用基于0的索引,就像C + +中的数组。要访问该位在特定索引位置,可以使用操作符[] ( ) 。对非const位阵列,操作符[ ] ( )返回一个引用位,可以在赋值的左侧使用。例如:

  1. QBitArray ba;
  2. ba.resize(3);
  3. ba[0] = true;
  4. ba[1] = false;
  5. ba[2] = true;

由于技术原因,它是更有效地使用testBit()和setBit( )来访问数组比运营商的位[] ( ) 。例如:

  1. QBitArray ba(3);
  2. ba.setBit(0, true);
  3. ba.setBit(1, false);
  4. ba.setBit(2, true);

QBitArray支持&AND) ,|OR) ,^XOR) ,~NOT) ,以及&=|=^=。这些运营商在相同的方式相同名称的内置C + +的位运算符的工作。例如:

  1. QBitArray x(5);
  2. x.setBit(3, true);
  3. // x: [ 0, 0, 0, 1, 0 ]
  4. QBitArray y(5);
  5. y.setBit(4, true);
  6. // y: [ 0, 0, 0, 0, 1 ]
  7. x |= y;
  8. // x: [ 0, 0, 0, 1, 1 ]

由于历史原因, QBitArray一个空位阵列和一个空的位阵列之间的区别。一null位阵列是使用QBitArray的默认构造函数初始化一个位阵列。一个empty位阵列中的任何位数组大小为0 。空阵位总是空的,但一个空的位阵列不一定空:

  1. QBitArray().isNull(); // returns true
  2. QBitArray().isEmpty(); // returns true
  3. QBitArray(0).isNull(); // returns false
  4. QBitArray(0).isEmpty(); // returns true
  5. QBitArray(3).isNull(); // returns false
  6. QBitArray(3).isEmpty(); // returns false

之外的全部功能isNull( )把空位阵列一样空位阵列,例如,QBitArray()比较等于QBitArray (0)。我们建议您始终使用isEmpty()和避免isNull( ) 。


Method Documentation

  1. QBitArray.__init__ (self)

构造一个空数组位。

See also isEmpty( ) 。

  1. QBitArray.__init__ (self, int size, bool value = False)

构造一个位阵列包含size位。该位与初始化value,默认为False ( 0 ) 。

  1. QBitArray.__init__ (self, QBitArray other)

构造的副本other

该操作需要constant time,因为QBitArray is implicitly shared。这使得返回一个QBitArray从非常快的函数。如果共享的实例被改性时,其将被复制(复制写入时) ,而这需要linear time

See also operator=( ) 。

  1. bool QBitArray.at (self, int i)

返回索引位置的位值i

i必须是位阵列中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also operator[]( ) 。

  1. QBitArray.clear (self)

清除该位阵列的内容,并使其为空。

See also resize()和isEmpty( ) 。

  1. QBitArray.clearBit (self, int i)

设置位索引位置i为0。

i必须是位阵列中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also setBit()和toggleBit( ) 。

  1. int QBitArray.count (self)

size( ) 。

  1. int QBitArray.count (self, bool on)

If on诚然,此函数返回所存储的比特数组中1位的号码,否则返回0位的数量。

  1. QBitArray.detach (self)
  1. QBitArray.fill (self, bool val, int first, int last)

设置该位阵列中每一个位value如果成功,则返回True ,否则返回False 。如果size是从-1 (默认值)不同,该位阵列大小调整为size事前。

例如:

  1. [QBitArray]($docs-qbitarray.html) ba(8);
  2. ba.fill(true);
  3. // ba: [ 1, 1, 1, 1, 1, 1, 1, 1 ]
  4. ba.fill(false, 2);
  5. // ba: [ 0, 0 ]

See also resize( ) 。

  1. bool QBitArray.fill (self, bool value, int size = -1)

这是一个重载函数。

设置位在索引位置begin达,但不包括endvalue

beginend必须是位阵列中的一个有效的索引位置(即0 \u003c =begin\u003c =size()和0 \u003c=end\u003c =size())。

  1. bool QBitArray.isDetached (self)
  1. bool QBitArray.isEmpty (self)

返回True如果该位数组的大小为0 ,否则返回False 。

See also size( ) 。

  1. bool QBitArray.isNull (self)

返回True如果该位数组为null ,否则返回False 。

例如:

  1. [QBitArray]($docs-qbitarray.html)().isNull(); // returns true
  2. [QBitArray]($docs-qbitarray.html)(0).isNull(); // returns false
  3. [QBitArray]($docs-qbitarray.html)(3).isNull(); // returns false

Qt后,由于历史的原因空位阵列和空bit数组之间的区别。对于大多数应用来说,重要的是一个位阵列中是否包含任何数据,这可以通过确定isEmpty( ) 。

See also isEmpty( ) 。

  1. QBitArray.resize (self, int size)

调整大小的位阵列size位。

If size大于该电流的大小,位阵列被扩展以使其size与额外的比特位添加到末尾。新的位被初始化为False ( 0 ) 。

If size小于该电流的大小,比特被从端部除去。

See also size( ) 。

  1. QBitArray.setBit (self, int i)

设置位索引位置i为1。

i必须是位阵列中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also clearBit()和toggleBit( ) 。

  1. QBitArray.setBit (self, int i, bool val)

这是一个重载函数。

设置位索引位置ivalue

  1. int QBitArray.size (self)

返回所存储的比特阵列中的比特数。

See also resize( ) 。

  1. QBitArray.swap (self, QBitArray other)

掉期位阵列other与此位阵列。这个操作是非常快的,而且永远不会。

此功能被引入Qt的4.8 。

  1. bool QBitArray.testBit (self, int i)

返回True ,如果该位索引位置i为1 ,否则返回False 。

i必须是位阵列中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also setBit()和clearBit( ) 。

  1. bool QBitArray.toggleBit (self, int i)

反转索引位置的位值i,返回该位为任一真(如果它被设置)或False (如果它是未设置)的前一个值。

如果以前的值为0 ,则新值将是1 。如果以前的值为1 ,新值将为0 。

i必须是位阵列中的一个有效的索引位置(即0 \u003c =i\u003csize())。

See also setBit()和clearBit( ) 。

  1. QBitArray.truncate (self, int pos)

截断位阵列索引位置pos

If pos超出了数组的结尾,没有任何反应。

See also resize( ) 。

  1. QBitArray QBitArray.__and__ (self, QBitArray)

[

  1. bool QBitArray.__eq__ (self, QBitArray a)
  1. bool QBitArray.__getitem__ (self, int i)
  1. int QBitArray.__hash__ (self)

]($docs-qbitarray.html)

  1. QBitArray QBitArray.__iand__ (self, QBitArray)

  1. QBitArray QBitArray.__invert__ (self)

  1. QBitArray QBitArray.__ior__ (self, QBitArray)

  1. QBitArray QBitArray.__ixor__ (self, QBitArray)

[

  1. QBitArray.__len__ (self)
  1. bool QBitArray.__ne__ (self, QBitArray a)

]($docs-qbitarray.html)

  1. QBitArray QBitArray.__or__ (self, QBitArray)

  1. QBitArray QBitArray.__xor__ (self, QBitArray)