Qt容器类-QList、QMultiMap

1.简介

QList类可能是Qt中最常用的容器类了,经QList类衍生了许多子类,如QStringlist等,QList类已经被高度优化;QMultiMap与QMap类其实很类似,唯一区别在于QMap类是一键一值,而QMultiMap则是一键多值,掌握了前者,后者学习起来就很简单了;

2.代码片段

QList list;
    list<<"1"<<"2"<<"3";
    list.append("hello");  //也可以用prepend
    list.append("rool");
    list.insert(0,"world");  //可以改变list中的位置
     list.removeAt(i);//删除
#if 0  //遍历方式一:可以直接当做数组遍历
    for(int i=0;i<list.size();i++)
        //        qDebug()<<list[i];
        qDebug()<<list.at(i);
#endif

//遍历方式二:java风格迭代器遍历,这里只涉及只读迭代器,还有一种读写迭代器QMutableListIterator
    QListIterator i(list);
    for(;i.hasNext();)
        qDebug()<//迭代器一般位于第一个表项之前,next函数使迭代器跳过表项并返回其所跳过表项的内容



    QMultiMap map;   //可以自定义键值对的数据类型,这里都是字符串
    map.insert("beijing","hello");  // 插入,貌似没有append什么的
    map.insert("beijing","world"); //一键多值
    map.insert("beijing","happy");
    map.insert("april","nice");
    map.insert("april","ok");
    map.insert("london","hhh");
    map.remove("beijing");//删除
#if 0 遍历方式,本来以为迭代器是以key值为表项分开的,后来才发现是以value分割的
    QMapIterator j(map);
    QList rList;
    for(;j.hasNext();)
    {
        //        rList.clear();

        qDebug()<<"key:"<"value:"<#endif

//查询
    QList rList;
    rList.clear();
    rList=map.values("beijing");  //因为是一键多值,所以返回的是个list,注意这里的参数是key,而不是value
    for(int i=0;i

3.总结

Qhash类和Qmap类很相似,不同点在于:

Qhash比Qmap具有更快的查找速度
Qhash以任意顺序存储数据,Qmap则是按键的顺序存储,所以当存储数据的顺序无关紧要时,就使用Qhash,反之Qmap

相同点在于:

插入、遍历方式相同
对应于QMultiMap一键多值,有QMultihash

你可能感兴趣的:(Qt)