1、QList是一種表示鏈表的模板類。
2、QList是Qt的一種泛型容器類。它以鏈表方式存儲一組值,並能對這組數據進行快速索引,還提供了快速插入和刪除等操作。
3、QList、QLinkedList和QVector提供的操作極其相似:
* 對大多數操作來說,我們用QList就可以了。其API是基於索引(index)的,因此用起來比QLinkedList更方便(QLinkedList的API是基於迭代器的)。QList比QVector更快,這是由它們在內存中的存儲方式決定的。
* 需要使用QLinkedList的地方:
* 需要使用QVector的地方:元素的儲存位置彼此相鄰。
4、QList表示為一組指向被存儲元素的數組。(例外,如果T本身就是指針類型,或者是size不大於指針類型的基本類型,或者是Qt的共享類,那么QList會直接在指針數組中存儲這些元素 。)元素個數小於1000的QList能夠很快地實現在鏈表中間插入操作,以及快速的查找操作。此
外,由於QList在鏈表兩端都預先分配了內存,因此實現prepend()和append()操作都很快。
注意:對於size比指針大的共享類,使用QVector會更好。
5、以下是兩個分別存儲int型數據和QDate類型數據的鏈表:
1 QList intList; 2 QList dateList;
6、QList以鏈表形式存儲一組元素。默認為空鏈表,我們可以使用<<操作符添加元素:
1 QList list; 2 list << “one” << “two” << “three”; // list: [“one”, “two”, “three”]
7、QList提供了一系列添加、移動、刪除元素的操作:insert(), replace(), removeAt(), swap()。此外,它還提供了便於操作的函數:append(), prepend(), removeFirst(), removeLast()。
8、QList與C++中數組的索引方式一樣,都是從0開始的。我們可以使用[]操作符來訪問位於索引值
處的元素。對於非const鏈表,操作符[]返回的是該元素的引用,並且返回值可以用途左操作數。
1 if ( list[0] == “Bob” ) 2 list[0] = “Robert”;
由於QList是以指針數組的形式實現的,該操作能夠很快地實現(時間復雜度為常數)。對於只讀訪問,我們可以用at()函數實現訪問:
1 for ( int i=0; i!=list.size(); ++i ) 2 { 3 if ( list.at(i) == “Jane” ) 4 { 5 cout << “Found Jane at position:” << i<< endl; 6 } 7 }
at()操作比操作符[]更快,因為它不需要深度復制(deep copy)。
9、QList的一個常用操作是,從鏈表中取出一個元素(元素不再在鏈表之中),並對該元素進行操作。QList提供了以下操作來實現此功能:
takeAt()、takeFirst()、takeLast()。