如果有需要请关注下面微信公众号,会有更多收获!
1.QLinkedList 是 Qt 中的一个双向链表类。它提供了高效的插入和删除操作,尤其是在中间插入和删除元素时,比 QVector 更加优秀。下面是使用 QLinkedList 的一些基本方法:
- 创建 QLinkedList 对象
QLinkedList<int> linkedList;
- 在链表末尾添加元素
linkedList.append(1);
linkedList.append(2);
- 在链表中插入元素
QLinkedList<int>::iterator it = linkedList.begin();
it++;
it = linkedList.insert(it, 3);
- 删除链表中的元素
QLinkedList<int>::iterator it = linkedList.begin();
it++;
linkedList.erase(it);
- 获取链表的大小
int size = linkedList.size();
- 获取链表中的元素
QLinkedList<int>::iterator it = linkedList.begin();
int value = *it;
- 遍历整个链表
for(QLinkedList<int>::iterator it = linkedList.begin(); it != linkedList.end(); it++){int value = *it;// do something
}
需要注意的是,在遍历过程中,不要使用 auto 关键字来定义变量,因为 QLinkedList 的迭代器不支持自动推导类型。
除了上面列出的方法,还有其他的一些操作 QLinkedList 的函数,如:clear、push_front、pop_front 等。总的来说,QLinkedList 是一个非常实用的类,可以在诸如列表,队列等场景中优化性能。
最近在使用Qt6版本是无法使用QLinkedList,报出以下错误:
本人以前使用的是Qt5.6版本,一直都好好的,但是使用Qt6.6后出现错误,我查看了编译器(minGw)里include文件夹发现存在QLinkedList,为啥没有呢?我查阅了官方文档QLinkedList存在于Qt5中,因为Qt6版本使用cmake编译体系,Qt5都是使用qmake
如果使用qmake编译需要在.pro文件里加入
QT += core5compat
cmake编译需要在CmakeLists.txt文件里加入:
find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(your_project_name PRIVATE Qt6::Core5Compat)
这个问题就成功解决了