QList

目录

1、增加

2、删除

3、改

4、查找

5、取值

6、转换

7、测试代码


QList是指针数组,当泛型小于等于4字节,直接存值,反之存对象的地址。

1、增加

//创建
QList list;
for(int i = 0; i < 5; ++i)    list << i +1;
QList myList;

//增加
myList << 2;        //可以传值,可以传同类型的链表
myList.append(3);   //可以传值,可以传同类型的链表
myList.push_back(4);//在链表最后插值
myList.prepend(1);      //在链表首地址插值、
myList.push_front(0);   //在链表首地址插值、
qDebug() << myList;

//插值
myList.clear();
myList.insert(0,2);     //在位置0,插入数字2
myList.insert(myList.begin(),1); //在链表起始位置插入数字1
qDebug() << myList;

2、删除

//删除
myList.clear();
myList << list;
myList.erase(myList.begin()); //删除某一位置的元素
qDebug() << myList;
myList.erase(myList.begin(),myList.end());//删除链表某一区间的元素
qDebug() << myList;

//删除某值
myList.clear();
myList << list;
myList.removeAt(2);     //删除位置2上的元素
qDebug() << myList.removeAll(2);    //删除值为2的元素,成功返回1
qDebug() << myList.removeOne(4);    //删除元素4
myList.removeLast();        //删除第一个元素
myList.removeLast();        //删除最后一个元素
qDebug() << myList;

//删除并返回元素值
myList.clear();
myList.append(list);
qDebug() << myList.takeAt(0);   //取出位置0上的元素,并返回它的值
qDebug() << myList.takeFirst(); //取出第一个元素,并返回它的值
qDebug() << myList.takeLast();  //取出最后一个元素,并返回它的值

3、改

//改
myList.clear();
myList << list;
myList.replace(0,10);   //位置0上的元素,用10代替

4、查找

//查
qDebug() << myList.indexOf(3,0); //从位置0开始查找元素3,返回元素位置
qDebug() << myList.lastIndexOf(3,0); //从后向前数,位置0开始查找元素3.返回元素位置
qDebug() << myList.endsWith(2); //判断,链表最后一个元素是否是2
qDebug() << myList.startsWith(2); //判断,链表第一个元素是否是2

5、取值

//取值
qDebug() << myList.front(); //链表第一个元素的值
qDebug() << myList.first(); //链表第一个元素的值
qDebug() << myList.last(); //链表最后一个元素的值
qDebug() << myList.mid(1,3); //取位置1,后的3个元素

6、转换

//转换
qDebug() << myList.toVector(); //返回一个vector对象
qDebug() << myList.toSet(); //返回一个set对象
std::list stdList =  myList.toStdList(); //返回一个list对象
qDebug() << stdList;

//将std::list转为QList
myList.clear();
myList = QList::fromStdList(stdList);

//将QVector转为QList
QVector vec;
for(int i = 0; i < 5; ++i) vec << i + 1;
myList.clear();
myList = QList::fromVector(vec);
qDebug() << myList;

//将QSet转为QList
QSet set;
for(int i = 0; i < 5; ++i) set << i + 1;
myList.clear();
myList = QList::fromSet(set);
qDebug() << myList;

7、测试代码

#include 
#include 
#include 

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //创建
    QList list;
    for(int i = 0; i < 5; ++i)    list << i +1;
    QList myList;

    //增加
    myList << 2;        //可以传值,可以传同类型的链表
    myList.append(3);   //可以传值,可以传同类型的链表
    myList.push_back(4);//在链表最后插值
    myList.prepend(1);      //在链表首地址插值、
    myList.push_front(0);   //在链表首地址插值、
    qDebug() << myList;
    //插值
    myList.clear();
    myList.insert(0,2);     //在位置0,插入数字2
    myList.insert(myList.begin(),1); //在链表起始位置插入数字1
    qDebug() << myList;

    //删除
    myList.clear();
    myList << list;
    myList.erase(myList.begin()); //删除某一位置的元素
    qDebug() << myList;
    myList.erase(myList.begin(),myList.end());//删除链表某一区间的元素
    qDebug() << myList;

    //删除某值
    myList.clear();
    myList << list;
    myList.removeAt(2);     //删除位置2上的元素
    qDebug() << myList.removeAll(2);    //删除值为2的元素,成功返回1
    qDebug() << myList.removeOne(4);    //删除元素4
    myList.removeLast();        //删除第一个元素
    myList.removeLast();        //删除最后一个元素
    qDebug() << myList;

    //删除并返回元素值
    myList.clear();
    myList.append(list);
    qDebug() << myList.takeAt(0);   //取出位置0上的元素,并返回它的值
    qDebug() << myList.takeFirst(); //取出第一个元素,并返回它的值
    qDebug() << myList.takeLast();  //取出最后一个元素,并返回它的值

    //改
    myList.clear();
    myList << list;
    myList.replace(0,10);   //位置0上的元素,用10代替

    //查
    qDebug() << myList.indexOf(3,0); //从位置0开始查找元素3,返回元素位置
    qDebug() << myList.lastIndexOf(3,0); //从后向前数,位置0开始查找元素3.返回元素位置
    qDebug() << myList.endsWith(2); //判断,链表最后一个元素是否是2
    qDebug() << myList.startsWith(2); //判断,链表第一个元素是否是2

    //取值
    qDebug() << myList.front(); //链表第一个元素的值
    qDebug() << myList.first(); //链表第一个元素的值
    qDebug() << myList.last(); //链表最后一个元素的值
    qDebug() << myList.mid(1,3); //取位置1,后的3个元素

    //转换
    qDebug() << myList.toVector(); //返回一个vector对象
    qDebug() << myList.toSet(); //返回一个set对象
    std::list stdList =  myList.toStdList(); //返回一个list对象
    qDebug() << stdList;

    //将std::list转为QList
    myList.clear();
    myList = QList::fromStdList(stdList);

    //将QVector转为QList
    QVector vec;
    for(int i = 0; i < 5; ++i) vec << i + 1;
    myList.clear();
    myList = QList::fromVector(vec);
    qDebug() << myList;

    //将QSet转为QList
    QSet set;
    for(int i = 0; i < 5; ++i) set << i + 1;
    myList.clear();
    myList = QList::fromSet(set);
    qDebug() << myList;
    return a.exec();
}

 

你可能感兴趣的:(QT)