QT:QBitArray
QbitArray类提供位操作序列。
include<QBitArray>
公有函数:
| QBitArray () | |
| QBitArray ( int size , bool value = false ) | |
| QBitArray ( const QBitArray & other ) | |
| bool | at ( int i ) const |
| void | clear () |
| void | clearBit ( int i ) |
| int | count () const |
| int | count ( bool on ) const |
| bool | fill ( bool value , int size = -1 ) |
| void | fill ( bool value , int begin , int end ) |
| bool | isEmpty () const |
| bool | isNull () const |
| void | resize ( int size ) |
| void | setBit ( int i ) |
| void | setBit ( int i , bool value ) |
| int | size () const |
| bool | testBit ( int i ) const |
| bool | toggleBit ( int i ) |
| void | truncate ( int pos ) |
| bool | operator!= ( const QBitArray & other ) const |
| QBitArray & | operator&= ( const QBitArray & other ) |
| QBitArray & | operator= ( const QBitArray & other ) |
| bool | operator== ( const QBitArray & other ) const |
| QBitRef | operator[] ( int i ) |
| bool | operator[] ( int i ) const |
| QBitRef | operator[] ( uint i ) |
| bool | operator[] ( uint i ) const |
| QBitArray & | operator^= ( const QBitArray & other ) |
| QBitArray & | operator|= ( const QBitArray & other ) |
| QBitArray | operator~ () const |
涉及到得非成员函数:
| QBitArray | operator& ( const QBitArray & a1 , const QBitArray & a2 ) |
| QDataStream & | operator<< ( QDataStream & out , const QBitArray & ba ) |
| QDataStream & | operator>> ( QDataStream & in , QBitArray & ba ) |
| QBitArray | operator^ ( const QBitArray & a1 , const QBitArray & a2 ) |
| QBitArray | operator| ( const QBitArray & a1 , const QBitArray & a2 ) |
详细描述:
QBitArray类提供了一个位序列。
QBitArray类提供了访问序列中单独位的方法,也可以对序列中的位执行 与 、或、 非、异或操作(AND, OR ,NOT,XOR),提供隐式的内存共享机制,从而减少内存使用率和不必要的数据复制。
下面的代码初始化一个 QBitArray对象,包含200个数位(BITS),全部初始化为0,即FALSE:
<span style="font-family:SimHei;font-size:18px;">
</span>
<span style="font-family:SimHei;font-size:18px;"> 把QBitArray中的某个数位初始化为TRUE,或者传递第二个参数作为<strong>QBitArray的构造函数,如QBitArray ba(200,TRUE),或者在之后调用fill()函数。附注:在QBitArray中TRUE对应1,FALSE对应0.</strong></span>
QBitArray用0作为起始下标,这点类似于C++,当我们访问一个指定下标所对应的数位(BITS)时可以调用OPERATOR[]()。 在一个NON-CONST的位序列中,OPERATOR[]()返回一个可以用于左值的引用,例如:
出于性能考虑,当我们访问QBitArray中的指定位(BITS)时,testBit()和setBit()相对于OPERATOR[]()在性能上效率更高。例如:
QBitArray支持 &(AND) |(OR) ^(XOR) ~(NOT)操作,类似于&=,|=,^=.这些操作对应于C++按位访问的名称是一个意思。例如:
出于历史原因,QBitArray是区分NULL和EMPTY的,NULL对应于默认构造函数中的一个位,EMPTY在SIZE()返回0时被设置,一个NULL位总是EMPTY,但相反就不一定。例如:
在所有的函数中只有isNull()对NULL和EMPTY做相同的处理,例如:QBitArray()和QBitArray(0)的执行效果是一样的,通常情况下,建议使用isEmpty(),而避免使用isNull().
Member Function Documentation:
QBitArray:: QBitArray () //初始化一个为空的位处理序列
QBitArray:: QBitArray ( int size , bool value = false ) //初始化一个大小为size,默认情况下每一位(BITS)被初始化为FALSE即0
QBitArray:: QBitArray ( const QBitArray & other )
//复制构造函数。通常该函数会消耗一个常数时间值,因为为序列是建立的内存共享机制上的,所以会以很快的速度
bool QBitArray:: at ( int i ) const
//返回指定下标i处所对应的布尔值(要么是0(FALSE),或者是1(TRUE)),给定的下标值必须有效,(0<=i<sisize() ).
void QBitArray:: clear ()
//清空序列的内容,此时该序列位EMPTY,但不为NULL。
void QBitArray:: clearBit ( int i )
//把指定下标i对应的值设置为0,给出的下标必须有效,不可产生溢出。
int QBitArray:: count () const
//返回序列大小,等同于size().
int QBitArray:: count ( bool on ) const
//如果参数on为true则返回序列中1的个数,如果参数on为false,则返回序列中0的个数。
//例如:count(true)+count(false)==count()==size()
bool QBitArray:: fill ( bool value , int size = -1 )
//把序列中俄每一个位设置成参数value所对应的值,成功则返回true,失败则返回false。注意:如果给出了第二个参数size的值,且不等于默认值-1时,该序列的大小将被重置位size所对应的值,例如:
void QBitArray:: fill ( bool value , int begin , int end )
//这是一个重载的函数。把该序列中begin<=size<end这段范围的值设置成参数value所对应的值,参数begin和end
//必须是一个有效的范围,否则会产生越界或者溢出。
bool QBitArray:: isEmpty () const
//若果该序列的大小为0则返回true,否则返回false
bool QBitArray:: isNull () const
//如果该序列为NULL则返回true,否则返回false,例如:
出于历史原因,QT严格区分NULL和EMPTY,在大多数应用中,判断一个序列中是否包含有数据时,可以使用isEmpty()
void QBitArray:: resize ( int size )
//把序列的大小重置为参数size所指定的大小,如果参数size所指定的大小比序列的当前size()要大,则在序列end()后追加额外的空间,并把追加的空间的默认值设置为0.如果参数size所指定的值比序列的size()要小,则以逆序的方式从end()开始移除对应的位。
void QBitArray:: setBit ( int i )
//把参数i所指定的序列下标所对应的位值设置为1,参数i必须是一个有效的下标,否则会产生越界或溢出。
void QBitArray:: setBit ( int i , bool value )
//这是一个重载的函数,把参数i所指定的下标所对应的序列位值设置成参数value所指定的值。
int QBitArray:: size () const
//返回序列中位的个数的大小。
bool QBitArray:: testBit ( int i ) const
//如果参数下标值i所对应的序列值为1则返回true,否则返回false.参数i必须是一个有效的下标值,否则会产生越界或者溢出。
bool QBitArray:: toggleBit ( int i )
//反转下标i所对应的序列值,如果参数i所给定的下标,对应的序列值为0则反转未1,如果对应的序列值为1俄反转未0.参数i必须是一个有效的下标值,否则会产生越界或者溢出。
void QBitArray:: truncate ( int pos )
//切断下标pos到end()这段序列值,如果pos超出end()所限定的范围,则该操作无效。
bool QBitArray:: operator!= ( const QBitArray & other ) const
//如果this序列等于other序列,则返回true,否则返回false.
QBitArray & QBitArray:: operator&= ( const QBitArray & other )
//在this序列和other序列的all bit上执行 &= 操作,把产生的结果值赋值诶this序列,并返回this序列的引用,返回的序列会采用两个序列中长度最长的那个,较短序列的空余位添0,然后进行&操作.例如:
QBitArray & QBitArray:: operator= ( const QBitArray & other )
//把other序列赋值给this序列,并返回该序列的引用。
bool QBitArray:: operator== ( const QBitArray & other ) const
//如果other序列等于this序列返回true,否则返回false
QBitRef QBitArray:: operator[] ( int i )
//返回下标i所对应的序列值,该返回值可用于左值进行赋值运算,参数i必须是有效的下标值,否则会产生越界或者溢出。例如:
相对而言 testBit (), setBit (), and clearBit () 在执行效率上稍快一些。
bool QBitArray:: operator[] ( int i ) const
//这是一个重载函数,如果下标i所对应的序列值位1则返回true,如果下标i所对应的序列值位0则返回false
QBitRef QBitArray:: operator[] ( uint i )
//重载函数,不同的是参数i是unsigned int 的类型重定义。并返回可用于左值赋值的引用
bool QBitArray:: operator[] ( uint i ) const
//重载函数,不同的是参数是unsigned int
QBitArray & QBitArray:: operator^= ( const QBitArray & other )
//在other和this序列间执行XOR异或操作,并把操作结果赋值给this序列,返回一个可用于左值赋值的引用值,结果集取两个序列中长度最长的那个,较短序列的空余部分用0填充,然后进行^操作。例如:
QBitArray & QBitArray:: operator|= ( const QBitArray & other )
//在other和this序列间执行OR(或)操作,并把操作集赋值给this序列,返回一个引用。结果取两个序列中长度最长的那个,较短序列的空余部分用0填充,然后进行|操作。例如:
QBitArray QBitArray:: operator~ () const
//反转序列中的每一个位,如果当前位是0则反转为1,如果当前位是1则反转为0,例如:
涉及到得非成员函数:
QBitArray operator& ( const QBitArray & a1 , const QBitArray & a2 )
//返回序列a1和序列a2在进行&操作后的序列集,如果a1.size()<a2.size(),或者a2.size()<a1.size(),则把较短序列扩充至较长序列所对应的长度,并在尾部填充0,然后和较长序列进行&操作,例如:
QBitArray operator^ ( const QBitArray & a1 , const QBitArray & a2 )
//返回序列a1和a2的XOR结果集,把较短序列扩充至较长序列所对应的长度,并在尾部用0填充,然后和较长序列进行XOR操作。
QBitArray operator| ( const QBitArray & a1 , const QBitArray & a2 )
//对序列a1和a2进行OR操作,并返回结果集,把较短序列扩充至较长序列所对应的长度,并在尾部用0填充,然后进行OR操作。例如:
QDataStream & operator<< ( QDataStream & out , const QBitArray & ba )
//把序列ba的每一位送至输出缓冲区,进行输出。
QDataStream & operator>> ( QDataStream & in , QBitArray & ba )
//读取输入流中的数据送入序列ba中。
QT:QBitArray的更多相关文章
- 对QT中QBitArray类进行简单剖析
我们知道Qt中的QBitArray类支持在位(bit)的层次上进行数据操作.本文剖析该类在二进制文件读写时的一些要点.另外,在Qt中,QDataStream类对于二进制文件的读写提供了诸多便利,需要注 ...
- QT QString 很全的使用 (转)
QString, QByteArray, 和 QVariant这三个类和容器有许多相同之处,并且在一些情况下可以被当作特殊的容器. 同样,像容器,这些类使用隐式共享来优化内存和速度. 我们将从QStr ...
- QT中的字符串处理函数
Fn 1 : arg 这个函数的具体声明不写了,它有20个重载,典型的示例代码如下: 1: #include <QtCore/QCoreApplication> 2: #include & ...
- 将vim作为QT开发的IDE
转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIM ...
- C/C++取出变量的每一位的值(第一次知道还有QBitArray)
前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作.此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作.当然CPP也有丰富的位运算操作,但是虽然也学过,知道意 ...
- Qt容器类(总结)(新发现的QQueue和QStack,注意全都是泛型)
Introduction Qt库提供了一组基于模板的一般化的容器类.这些容器可以存储指定的类型的元素.例如,如果你需要一个可变大小的Qstring数组,可以用QVector<QString> ...
- Qt的QVariant类
QStandardItemModel类中的函数 bool setData(const QModelIndex &index, const QVariant &value, int ro ...
- qt 5.2.1类和模块的关系图
QT│ ├─ActiveQt│ │ ActiveQt│ │ ActiveQtDepends│ │ ActiveQtVersion│ │ QAxAggregated│ │ QAxB ...
- Qt——容器类(译)
注:本文是我对Qt官方文档的翻译,错误之处还请指正. 原文链接:Container Classes 介绍 Qt库提供了一套通用的基于模板的容器类,可以用这些类存储指定类型的项.比如,你需要一个大小可变 ...
随机推荐
- MySQL 5.6数据库配置主从同步
win7环境下mysql主从搭建 我下载的是压缩包,免安装的那种 1.简单安装 解压后把my-default.ini复制一份改为my.ini默认mysql会找这个文件,首先从system32下找,然后 ...
- 带你走进EJB--MDB实现发送邮件(3)
接上篇,在业务逻辑中已经发送JMS消息,而接下来的消息驱动Bean作为JMS消息监听器,主要是负责监听指定的JMS消息,此时已经接受到JMS的消息,那么MDB的onMessage()方法会被触发.调用 ...
- HTML颜色编码
Web安全色 #000000 #000033 #000066 #000099 #0000CC #0000FF #003300 #003333 #003366 #003399 #0033CC #0033 ...
- [Irving]DateTime格式处理大全
DateTime dt = DateTime.Now;// Label1.Text = dt.ToString();//2005-11-5 13:21:25// Label2.Text = ...
- NodeJS 框架 Express 从 3.0升级至4.0的新特性
NodeJS 框架 Express 从 3.0升级至4.0的新特性 [原文地址:√https://scotch.io/bar-talk/expressjs-4-0-new-features-and-u ...
- ACM 2015年上海区域赛A题 HDU 5572An Easy Physics Problem
题意: 光滑平面,一个刚性小球,一个固定的刚性圆柱体 ,给定圆柱体圆心坐标,半径 ,小球起点坐标,起始运动方向(向量) ,终点坐标 ,问能否到达终点,小球运动中如果碰到圆柱体会反射. 学到了向量模板, ...
- YUV转灰度
转载自:http://blog.csdn.net/sxjk1987/article/details/7470545 标准的V4L2 API http://v4l.videotechnology.com ...
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...
- HW3.16
public class Solution { public static void main(String[] args) { int randomValue = (int)(Math.random ...
- HW1.5
public class Solution { public static void main(String[] args) { System.out.println("(9.5 * 4.5 ...