QT中的容器遍历
?
Qt?的容器類提供了兩種風格的遍歷器:Java?風格和?STL?風格。
?
Java?風格的遍歷器
Java?風格的遍歷器是在?Qt4?首先引入的,是?Qt?應用程序首先推薦使用的形式。這種風格比起?STL?風格的遍歷器更方便。方便的代價就是不如后者高效。
 Java 風格的遍歷器指向的是兩個元素之間的位置,而不是指向元素本身。因此,它們可能會指向集合第一個元素之前的位置,也可能指向集合的最后一個元素之后的位置,
每一種容器都有兩種?Java?風格的遍歷器:一種提供只讀訪問,一種提供讀寫訪問:
|   容器  |   只讀遍歷器  |   讀寫遍歷器  | 
|   QList,QQueue  |   QListIterator  |   QMutableListIterator  | 
|   QLinkedList  |   QLinkedListIterator  |   QMutableLinkedListIterator  | 
|   QVector,QStack  |   QVectorIterator  |   QMutableVectorIterator  | 
|   QSet  |   QSetIterator  |   QMutableSetIterator  | 
|   QMap,QMultiMap  |   QMapIterator  |   QMutableMapIterator  | 
|   QHash,QMultiHash  |   QHashIterator  |   QMutableHashIterator  | 
 QLinkedList、QVector和QSet的遍歷器接口與QList的是一樣的;QHash遍歷器的接口則同QMap是一樣的。
?
我們通過下面的代碼看看如何使用這種遍歷器:
點擊(此處)折疊或打開
 如果需要修改操作,我們可以使用QMutableListIterator。來看下面的代碼:
點擊(此處)折疊或打開
QMapItrator也是類似的。例如,
點擊(此處)折疊或打開
 ?
?
STL?風格的遍歷器
STL?風格的遍歷器從?Qt?2.0?就開始提供。這種遍歷器能夠兼容?Qt?和?STL?的通用算法,并且為速度進行了優化。同?Java?風格遍歷器類似,Qt?也提供了兩種?STL?風格的遍歷器:一種是只讀訪問,一種是讀寫訪問。我們推薦盡可能使用只讀訪問,因為它們要比讀寫訪問的遍歷器快一些。
|   容器  |   只讀遍歷器  |   讀寫遍歷器  | 
|   QList,QQueue  |   QList::const_iterator  |   QList::iterator  | 
|   QLinkedList  |   QLinkedList::const_iterator  |   QLinkedList::iterator  | 
|   QVector,QStack  |   QVector::const_iterator  |   QVector::iterator  | 
|   QSet  |   QSet::const_iterator  |   QSet::iterator  | 
|   QMap,QMultiMap  |   QMap::const_iterator  |   QMap::iterator  | 
|   QHash,QMultiHash  |   QHash::const_iterator  |   QHash::iter  | 
?
 不同于?Java?風格遍歷器,STL?風格遍歷器直接指向元素本身。
下面是有關QList的相關代碼:
點擊(此處)折疊或打開
 QMap和QHash的遍歷器,*?運算符返回集合鍵值對。下面的代碼,我們打印出QMap的所有元素:
點擊(此處)折疊或打開
?
foreach關鍵字
如果我們僅僅想要遍歷集合所有元素,我們可以使用?Qt?的foreach關鍵字。這個關鍵字是?Qt?特有的,
例如,我們使用foreach對QLinkedList進行遍歷:
?
點擊(此處)折疊或打開
總結
                            
                        - 上一篇: VUE - get 、post 请求后
 - 下一篇: qt中Qtableview的用法