QVector类是一类提供了动态数组模板。
QVector<T>是Qt普通容器类的一种。
它将自己的每个对象存储在连续的内存中。能够使用索引號来高速訪问它们。QList<T>、QLinkedList<T>和
QVarLengthArray<T>也提供了相似的功能,它们用法例如以下:
l QList一般用得最多,它能满足我们绝大部分需求。像prepend()和insert()这种操作通常比QVector要快些,这是因为QList存储它的对象的方式(Algorithmic Complexity)不同。
还有它基于索引的API比QLinkedList的基于迭代器的API更方便使用。最后,运行程序时它的代码扩展量更少些。
l QLinkedList,当你须要使用一个真正的链表,要求在恒定的时间内将对象插入到列表的中间,你更想用迭代器而不是索引號来訪问对象。这个时候就使用QLinkedList吧!
l QVector。假设你想要在连续的内存上存储你的对象,你的对象比指针还要大,你想避免单独地把对象插入到堆的头部时,使用QVector。
l QVarLengthArray,假设你想要一个低层次的可变大小的容器,QVarLengthArray就足够了,它的长处是速度快!
以下是使用QVector存放整型值和QString的样例:
QVector<int> integerVector;
QVector<QString> stringVector;
QVector保存对象的向量容器。一般是使用初始大小来创建向量容器。
举例,以下的代码构造了一个拥有200个元素的QVector:
QVector<QString> vector(200);
假设所创建的向量容器对象没有赋初值,就会被使用这个向量容器的类的默认构造函数进行初始化。基本类型和指针类型都会被初始化为0,假设想使用其他的初值来初始化对象时,能够在初始化时再加入一个參数:
QVector<QString> vector(200,"Pass");
你也能够调用fill()函数在不论什么时候填充向量容器。
可是当你要显示里面的详细字符串的时候
在Qt开发中,QString通过toAscii().data()转换为char *类型
QByteArray QString::toAscii () const
Returns an 8-bit representation of the string as a QByteArray.
If a codec has been set using QTextCodec::setCodecForCStrings(), it is used to convert Unicode to 8-bit char; otherwise this function does the same as toLatin1().
Note that, despite the name, this function does not necessarily return an US-ASCII (ANSI X3.4-1986) string and its result may not be US-ASCII compatible.
假设setCodecForCStrings编码字函数集。toAscii将Unicode转换为8位char种类。否则,toLatin1相同。