QT風格的STL迭代器使用
Qt提供了一組通用的基於模板的容器類。對比C++的標準模板庫中的容器類,Qt的這些容器更輕量、更安全並且更容易使用。
Qt的容器類在速度、記憶體消耗和內聯程式碼方面進行了優化。
儲存在Qt容器中的資料必須是可賦值的資料型別,這種資料型別必須提供一個預設的建構函式,一個複製建構函式,一個賦值
操作運算子。
QList類、QLinkedList類、QVector類:
容器類 | 查 找 | 插 入 | 頭部新增 | 尾部新增 |
QList | O(1) | O(n) | Amort.O(1) | Amort.O(1) |
QLinkedList | O(n) | O(1) | O(1) | O(1) |
QVector | O(1) | O(n) | O(n) | Amort.O(1) |
QList類:
QList<T>是最常用的容器類,它儲存給定資料型別T的一列數值。繼承自QList的子類有: QItemSelection、QQueue、
QSignalSpy、QStringList、QTestEventList。
QList成員函式:
void QList::append(const QList<T> &value) //新增一個值到列表中
QList<string> list; list.append("one"); list.append("two"); //list = {"one" "two"}
const T&QList :: at(int i)const //返回列表中索引的位置
QList :: iterator QList :: begin() //返回指向列表中的第一個元素
QList::const_iterator QList::cbegin() const //返回指向列表中的第一個const STL風格迭代器
void QList :: clear() //清空列表中所有元素
返回指向列表中第一個元素的const STL樣式迭代器
返回指向列表中最後一個元素之後的const STL樣式迭代器
const T&QList :: constFirst()const //
int QList :: count(const T&value)const //返回列表中值的出現次數
返回一個const STL樣式的反向迭代器,它以相反的順序指向列表中的第一個元素
bool QList :: empty()const //它等效於isEmpty(),true
如果列表為空則返回
void QList :: insert(int i,const T&value) //在列表中的索引位置i處插入值。如果i <= 0,則該值將新增到列表中。
QList<QString> list;
list << "alpha" << "beta" << "delta";
list.insert(2, "gamma");
// list: ["alpha", "beta", "gamma", "delta"]
void QList :: move(int from,int to) //將索引位置的專案從索引位置移動到。
QList<QString> list;
list << "A" << "B" << "C" << "D" << "E" << "F";
list.move(1, 4);
// list: ["A", "C", "D", "E", "B", "F"]
此處省略...
更多成員函式可以參考Qt文件。
QLinkedList類的使用:
QLinkedList<T> 是一個鏈式連結串列,它以非連續的記憶體塊儲存資料。
QLinkedList<T> 不能使用下標,只能使用迭代器訪問它的資料項。
QLinkeList成員函式:
參照QLIst成員函式,大多功能相似,也可以參考Qt文件,因為函式功能類似且比較多,不一一列舉了。
QVector類的使用:
QVector <T>是Qt的通用容器類之一。它將其元素儲存在相鄰的記憶體位置,並提供快速的基於索引的訪問。
QVector<int> number; //建立一個儲存 int型別 QVector
QVector<QString> str; //建立一個儲存 QString型別 QVector
QVector將其元素儲存在向量(陣列)中,
QVector<int> vector(200); //初始化一個包含200個元素的vector
更多QVector的使用參考Qt文件,成員函式實在太多,偷一把懶了吧。QVector函式使用
關於Qt的更多使用後續會繼續更新...