当我们想用数组时,但是又不知道数组的大小,数组的大小是根据实际情况变化的,不确定的,这是我们就要为数组动态分配空间,这时,我们可以考虑两种情况:(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()就在分配空间

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐