Qt6之QVarLengthArray——可变长度数组

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个值打印时,显然值是随机的;

猜你喜欢

转载自blog.csdn.net/yanchenyu365/article/details/130363841