Qt学习总结(C鱼)之QList和QMap容器类

  

QList

  

QList容器是一个数组列表,特点如下:

  
  

1。大多数情况下可以用QList。像预先考虑(),将()和插入()这种操作,通常QList比QVector快的多。这是因为QList是基于指数标签存储它的元素项在内存中(虽然内存不连续,这点与STL的名单是一样的),比那种依赖迭代器迭代的容器类更快捷,而且你的代码也更少。

  

2。当迭代器指向QList中的一个项目后,如果QList进行了插入或者删除操作,那么这个迭代器就无效了。

  

3. QStringList类就是继承于<强> 强QList容器类(注意QList其实是一个类模板,里面装的是QString类型,然后又有一个QStringList类继承于它)。

     

QList容器的简单用法(<强>由于QStringList是继承于QList,所以下面的所有用法对于QStringList容器一样适用):

  
 <代码> # include & lt; QCoreApplication>
  # include
  # include
  
  int主要(int命令行参数个数,char * argv [])
  {
  QCoreApplication(命令行参数个数,argv);
  QList列表;//创建了一个QList容器,容器内部存储QString类型的数据,返回一个列表对象,该对象有很多操作该容器的方法。
  list<& lt;“aa”& lt; & lt;“bb”& lt; & lt;“cc”;//可以采用& lt; & lt;的符号将数据输入到容器内存储。
  如果(列表[1]==癰b”)
  {
  列表[1]=癮b”;
  }
  list.replace(2、“公元前”);//列表对象的替代方法将指定索引位置的元素值替换成指定的类型值,参数1是列表索引位置,参数2是指定替换的类型值。
  qDebug () & lt; & lt;“这个名单是:”;
  (int i=0; i< list.size (); + + i)//列表对象的大小方法返回该容器存储的元素个数。
  {
  qDebug () & lt; & lt; list.at (i);//列表对象的在方法访问容器内指定索引位置的元素值。
  }
  list.append (dd);//调用列表对象的附加函数进行尾插入指定类型值。
  list.prepend (mm);//调用列表对象的预谋函数进行头插入指定类型值。
  QString str=list.takeAt(2);//调用列表对象的takeAt函数删除指定索引值的元素并弹出该删除的类型值。
  qDebug () & lt; & lt;(2)项:“& lt; & lt; str;
  qDebug () & lt; & lt;“这个名单是:”;
  (int i=0; i< list.size (); + + i)//列表对象的大小方法返回该容器存储的元素个数。
  {
  qDebug () & lt; & lt; list.at (i);//列表对象的在方法访问容器内指定索引位置的元素值。
  }
  list.insert (2 mm);//调用列表对象的插入方法在指定索引位置插入指定的类型值,参数1是索引值,参数2是要插入的类型值。
  list.swap(1,3);//调用列表对象的交换方法交换指定两个索引位置的元素值。
  qDebug () & lt; & lt;“这个名单是:”;
  (int i=0; i< list.size (); + + i)//列表对象的大小方法返回该容器存储的元素个数。
  {
  qDebug () & lt; & lt; list.at (i);//列表对象的在方法访问容器内指定索引位置的元素值。
  }
  qDebug () & lt; & lt;“包含'mm ?”& lt; & lt; list.contains (mm);//判断列表中是否包含“毫米”
  qDebug () & lt; & lt;”“毫米”数:“& lt; & lt; list.count (mm);//容器内包含“毫米”的个数//第一个“毫米”的位置,默认从0索引位置开始查找,找到就返回第一个匹配到的元素的索引位置
  qDebug () & lt; & lt;“第一个“毫米”指数:”& lt; & lt; list.indexOf (mm);//第二个“毫米”的位置,我们指定从索引位置1开始查找
  qDebug () & lt; & lt;“第二个“毫米”指数:“& lt; & lt; list.indexOf(“毫米”,1);
  返回a.exec ();
  } 
  

QMap<关键,T>

  

QMap<关键,T>容器是一个字典,属于关联容器的一种,特点如下:

  
  

1。它将关键类型的键值映射到T类型的值上,一般每个键关联一个值,特殊情况出现于调用insertMulti函数插入多值。

  

2。并且它是根据键顺序来存储它的顺序的,所以,QMap强调顺序,那么如果你存储的数据不关心存储顺序,可以考虑使用QHash来代替它。

     

QMap<关键,T>容器的简单用法():

  
 <代码> # include & lt; QCoreApplication>
  # include
  # include
  
  int主要(int命令行参数个数,char * argv [])
  {
  QCoreApplication(命令行参数个数,argv);
  QMap地图;//创建了一个QMap容器,容器内存储的键是QString类型,值是int类型,一个键只对应一个值,并且存储是讲究键顺序的。
  地图(“一”)=1;//当给一个容器内不存在的键赋值时,会自动将键和值添加进容器内
  地图(“三”)=3;
  map.insert(“七”,7);//也可以使用插入来为容器添加键值对。
  
  int value1=地图(“六”);//当采用键索引的方式访问键的值时,若容器内无该键,那么就会自动插入该新键,并且值默认设为0。
  qDebug () & lt; & lt;“value1:“& lt; & lt; value1;
  qDebug () & lt; & lt;“包含'six ?”& lt; & lt; map.contains(“六”);
  
  int value2=map.value(" 5 ");//调用值函数,若指定要访问的键在容器内找不到,那么不会自动插入该新键,并且默认返回0,函数的参数2可以指定返回的值。
  qDebug () & lt; & lt;“value2:“& lt; & lt; value2;
  qDebug () & lt; & lt;“包含g5 ?”& lt; & lt; map.contains (“5”);
  
  int value3=map.value(“九”,9);//函数的参数2指定返回的值。
  qDebug () & lt; & lt;“value3:“& lt; & lt; value3;//地图默认是一个键只对应存在一个值,所以,如果重新给该键设置了值,那么以前的值就会被删除替换,只保留最新的值。
  map.insert(“十”,10);
  map.insert(“十”,100);
  qDebug () & lt; & lt;“十:“& lt; & lt; map.value(“十”);/*
  地图可以调用insertMulti函数来实现一键多值,值得注意的是,在QMap容器中,若存在某个键拥有多个值,那么调用平常和的值
  使用地图(键名]索引的方式访问元素,那么实际上返回的就是调用insertMulti函数最后一次添加的值,而值函数是专门提供给
  一键多值的元素用来返回这个元素的所有存在的值形成的列表,这个列表可以使用QList来保存起来。
  */map.insertMulti(“两个”,2);
  map.insertMulti(“两个”,4);
  QList

Qt学习总结(C鱼)之QList和QMap容器类