QList 存储自定义结构体对象情况下,如何在迭代中判断条件并删除?

网上的例子都是简单的整型或者字符串操作,

使用foreach,或者iterator,removeOne(value);

但是实际用自定义结构体时,循环迭代删除时报错:

没有 == ;

原因是removeOne();或者其它删除操作,括号中的值实际上要去list中去判等操作,自定义结构体没有重载 ==符号,只要重载即可.

typedef struct box
{
    QString test1;
    QString test2;
    int test;
    bool operator==(const box& t)
    {
        return (test1 == t.test1) && (test2 == t.test2) &&
            (test == t.test) ;
    }

}BOX;

//==================testarea======================//
    QList tmpList;
    for (int i = 0; i < 6; i++)
    {
        BOX box;
        box.test = i;
        tmpList.append(box);
    }
    
    QList::iterator it = tmpList.begin();
    for (; it != tmpList.end(); it++)
    {
        if (it->test % 2 == 0)
        {
            tmpList.removeOne(*it);
        }
    }

 

操作过后,size只有3,test的值分别为1,3,5;

使用QList迭代删除不如QMap高效方便,但是有时应用场景,没有合适的对象作为key,QList也是不错的选择,就是删除时需要重载等于号罢了.

你可能感兴趣的:(QList 存储自定义结构体对象情况下,如何在迭代中判断条件并删除?)