如果有需要请关注下面微信公众号,会有更多收获!

1.QLinkedList 是 Qt 中的一个双向链表类。它提供了高效的插入和删除操作,尤其是在中间插入和删除元素时,比 QVector 更加优秀。下面是使用 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)
这个问题就成功解决了