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容器类