QVarLengthArray是一个Qt的容器,作用类似vector。它的元素连续存储在内存中,并且具有动态大小,可以随时向其中添加或删除元素。
与std::vector或QVector不同,QVarLengthArray在其自身内部预分配了一个小缓冲区。这个想法很简单:如果在“常见情况”下它只需要存储相对少量的元素,就可以避免为堆分配付费。(可以说:它是一个“具有小对象优化的向量”。)
1、这是通过将元素直接存储在QVarLengthArray的内部缓冲区中来实现的。
2、 如果QVarLengthArray增长太多并且元素的数量超过内部缓冲区的大小,则使用堆分配并且QVarLengthArray变得非常像一个“普通”vector;
3、警告:QVarLengthArray的resize与其它有区别;
QVarLengthArray<T>::resize(N)不一定会初始化其元素
QVector<int> vec;
vec.resize(10); //全是0
QVarLengthArray<int> qvla;
qvla.resize(10); // 你确定的值
因其值是不确定的,当读取或者操作时可能触发异常,如下当我随便找了3个值打印时,显然值是随机的;