12-Qt6 列表类QList
QList類是一種表示鏈表的模板類,一種泛型容器類,以列表形態存儲并管理其中的列表元素,并支持基于快速索引的數據存取,?也可以進行快速的數據刪除操作。
QList類對象表示為一組指向被存儲元素的數組,元素個數小于1000的QList類對象能夠實現在鏈表中間的快速插入和查找操作。
此外,由于QList類在鏈表兩端都預先分配了內存,因此實現鏈表前后端的添加操作都很快(這兩個成員函數為prepend ()和append() )。
?常見15種構造函數:
1. 初始化
默認時為空鏈表,可以使用<<操作符添加元素:
?2、訪問元素
at()執行速度比操作符[ ]更快。
3、插入操作
?函數insert(),在指定位置插入值,比如1就是,索引1的值。
4、替換操作
?replace()函數可替換指定位置處的值;
5、移除操作
函數removeAt(),移除索引位置的值;
6、移動操作
函數move(int from,int to),將索引from位置的值,移動到索引to位置的值,其他數據向前推。
7、交換操作
swapTtemsAt()函數,交換兩個索引對應的值,其它值不變化。
8、尾部插入元素
函數append( )可直接在尾部插入;
void append(const T &value);
?9、頭部添加元素
函數prepend()可直接首部添加元素
10、移除第一個元素
函數removeFirst()刪除列表第一個元素
11、移除最后一個元素
?removeLast()刪除最后一個元素
12、獲取第一個匹配元素對應索引位置
函數indexOf()
13、判斷是否包含有相應的元素
函數contains()
14、獲取指定值在列表中出現的次數
函數count()
?
15、獲取列表中元素的數量
還是函數count(),此時,無形參;
以下演示,兩種回收,qDeleteAll之前已經提及過,這里演示下:
//--- Memory considerations --- void test_deleteall() {QList<Test*> list;for(int i = 0; i < 5; i++){list.append(new Test()); //Danger no parent}qInfo() << "Cleanup";qDeleteAll(list);list.clear();qInfo() << list.length(); }void test_smart() {QList<QSharedPointer<Test>> list;for(int i = 0; i < 5; i++){QSharedPointer<Test> item(new Test); //Auto memory managementlist.append(item);}qInfo() << "Remove first";list.removeFirst();qInfo() << "Clear";list.clear();qInfo() << list.length();}總結
以上是生活随笔為你收集整理的12-Qt6 列表类QList的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10-Qt6 QStringView
- 下一篇: 13-Qt6 QMap