QList使用总结

概述
QList是Qt的泛型容器类之一。它将项目存储在一个列表中,该列表提供基于索引的快速访问以及基于索引的插入和删除。
QList、QLinkedList 和 QVector 提供了类似的 API 和功能。它们通常是可互换的,但性能有所区别。

QVector 应该是默认首选的容器
QList是最广泛用于Qt API中传递值的容器
QList不是指针结构体类型的链表,真正的结构体指针链表是 QLinkedList
一、QList 声明及初始化
QList可以保存基本数据类型的,如int,double,bool等;但是在存储QObject对象及其子类对象时,不能直接存对象本身,而是只能存对象的地址;

1. 声明 QList
声明简单:
 

//基本数据类型
QList integerList;
QList dateList;

//存储QObject对象的地址
QList  ptr_widgets;
QList  ptr_objects;

2. 初始化 QList

初始化也很简单;若没初始化,链表默认为空的。

QList list = { "one", "two", "three" };

QWidget * widget1 = new QWidget();
QWidget * widget2 = new QWidget();
QList ptr_widgets = {widget1, widget2};

二、QList 基本的 增加、删除、移动、修改
QList 在有些实现都是需要多个基本操作组合来实现的,不同的实现用的方法也不一致,Qt提供的都是最核心、最单一的功能。

1. 增加节点


insert():插入节点到
append():尾部添加节点
prepend() :头部添加节点
operator <<():尾部添加节点或链表
operator+=():尾部添加节点
2. 删除节点


removeAt():删除节点
removeFirst():删除头节点
removeLast():删除尾节点
3. 移动节点


move():链表内移动节点位置
swap():俩个链表交换值(其实交换一下地址映射就能实现)
4. 修改节点值


replace():替换链表内的节点值


三、QList 定位节点


QList是有序的链表,可以通过索引来得到

operator [ ] 数组索引符:这个和普通数组一样的使用 [ ] 访问下标方法一致
at() 函数:也是通过索引值,也即是下标方式
Qt 推荐使用at()函数,这样的效率更好,因为 at()函数不会发生 深拷贝 ,而另外一种方式会。

QList还提供了一些快捷的 索引 + 返回索引节点 + 删除原索引节点,也就是组合的功能;但是这个是 take…不是get…这样的,这就意味着,这个其实是✂剪掉一个节点,并返回

takeAt():取得在指定位置的节点
takeFirst():取得头节点 ;等价【takeAt(0)】
takeLast():取得尾节点


四、QList 的基本信息
contains():是否包含节点xxx
count():对指定节点值计数
isEmpty():链表为空?
size():链表大小?
indexOf():节点位置?
 

你可能感兴趣的:(QT,链表,数据结构)