当我们想用数组时,但是又不知道数组的大小,数组的大小是根据实际情况变化的,不确定的,这是我们就要为数组动态分配空间,这时,我们可以考虑两种情况:(1)在c++中使用new()和delete(),在c中使用malloc和free。(2)使用Vector容器
后者的使用更方便些,这里我主要介绍下QT中的QVector。
首先,引入#include <QVector>
在不知道要分配空间多少的情况下,我们先这样在***.h文件中声明
QVector<int> refCount;
QVector<int> refedCount;
QVector<QStringList> TempDpuName;
QVector<QStringList> TempFullDpuName;
在***.cpp文件中我们一定能够动态获取QVector要占据空间的大小,它是一个变量
如果我们要使用operator[](即下标[]),这样我们就可以像数组一样去操作了,我们就必须预先分配空间
如://提前分配空间
QStringList zeroList;//空的list
for(int i=0;i<fileNum;i++)
{
refedCount.append(0);
TempDpuName.append(zeroList);
TempFullDpuName.append(zeroList);
}
这有这样了,我们才可以使用下面的表示形式:
for(int j=0;j<refCount[i];j++)
{
tempString = dbList.at(j);
dpuNameRefed = tempString.split("[").at(1).split("]").at(0);
for(int k=0;k<fileNum;k++)
{
if(dpuNameRefed==fileList.at(k).baseName())
{
refedCount[k]++;//这里以下标表示
TempDpuName[k].append(fileName);//这里以下标表示
TempFullDpuName[k].append(dbList.at(j));//这里以下标表示
}
}
}
但如果直接使用.append(),而不是使用refedCount[k],就可以不用预先分配空间,因为.append()就在分配空间