QList

Qlist增删改查

QList是最常用的容器类。QList 以列表形态存储并管理数据,并能进行基于快速索引的访问,也可以进行快速的数据删除操作。继承自 QList 类的子类有 QItemSelection、QQueue、QStringList、QTestEventList.

用运算符<< 、append()、prepend()进行添加元素,insert()进行插入。QList维护了一个指针数组,数组元素指向每一个链表项,因此 QList 提供了基于下标的快速访问。

QList<int> list;
    //添加元素 0 3 1 2
    list<<1;
    list.append(2);//后面加
    list.prepend(3);//前面加
    list.insert(0,0);//设置位置加
    qDebug() << list;

    //找查元素
    qDebug() << list.at(1);
    qDebug() << list.contains(2);
    qDebug() << list[3];
    qDebug() << list.size();

    //修改元素
    list.replace(0,99);
    list[1] = 88;
    qDebug() << list;

    //删除元素
    list.removeFirst();//删除头
    list.removeLast();//删除尾
    list.removeAt(0);//删除第一个
    list.removeOne(1);//删除值为1的元素
    qDebug() << list;

    list.clear();//清空元素

Qlist遍历方式

//java读写迭代器
    qDebug() << "java读写迭代器";
    QList<int> moutList;
    QMutableListIterator<int> it_mrw(moutList);
    for(int i = 0; i < 12; i++){
        it_mrw.insert(i);
    }

    qDebug() << "Java反向遍历";
    for(it_mrw.toBack();it_mrw.hasPrevious();){
        qDebug() << it_mrw.previous();
    }

    qDebug() << "java正向遍历";
    for(it_mrw.toFront();it_mrw.hasNext();){
        qDebug() << it_mrw.next();
    }

    //修改值
    for(it_mrw.toFront();it_mrw.hasNext();){
        int mouth = it_mrw.next();
        if(mouth == 10) it_mrw.remove();//删除
        if(mouth == 9) it_mrw.setValue(90);//修改值
    }

    //java只读迭代器//遍历方法与读写一样
    QListIterator<int> it_mr(moutList);

    //STL风格迭代器
    //读写
    QList<int> numList;
    numList<<1<<2<<3<<4<<5;
    QList<int>::iterator it_num;
    it_num = numList.begin();
    for(;it_num != numList.end();++it_num){
        *it_num = *it_num * 10;
        qDebug() << *it_num;
    }

    //只读
    QList<int>::const_iterator it_rnum;
    it_rnum = numList.constBegin();
    for(;it_rnum != numList.constEnd();++it_rnum){
        qDebug() << *it_rnum;
    }

   

QLinkedList


    //不支持week[0]和.at(0)下标方式访问,内部无数组结构
    QLinkedList<QString> week;
    for(int i = 0; i < 8; i++){
        week << QString("%1%2").arg("星期").arg(i);
    }

    //java风格只读
   QLinkedListIterator<QString> it_r(week);
   for(it_r.toFront();it_r.hasNext();){
        qDebug() << it_r.next();
   }

   //java风格读写
   QMutableLinkedListIterator<QString> it_rw(week);
   for(it_rw.toFront();it_rw.hasNext();){
        QString day = it_rw.next();
        if(day == "星期4") it_rw.setValue("星期四");
        if(day == "星期7") it_rw.remove();
        if(day == "星期6") it_rw.insert("星期天");
   }

   qDebug() << "修改后";
   for(it_rw.toFront();it_rw.hasNext();){
        qDebug() << it_rw.next();
   }

   //STL风格读写
    QLinkedList<QString>::iterator it_week;
    it_week = week.begin();
    for(;it_week != week.end();++it_week){
        if(*it_week == "星期1") *it_week = "星期一";
        qDebug() << *it_week;
    }

    //只读
    QLinkedList<QString>::const_iterator it_rweek;
    it_rweek = week.constBegin();
    for(;it_rweek != week.constEnd();++it_rweek){
        qDebug() << *it_rweek;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值