QT,QVector 基本用法,遍歷[例項講解]
阿新 • • 發佈:2019-02-12
QVector,是Qt對所有陣列的封裝,比如我們想要一個int型別陣列,我們原先會寫int array[10],我們在Qt裡可以寫QVector <int> array(10),賦值的時候,我們依然可以照舊array[5]=4;想獲取某一項的值也還可以array[9],也就是說,原來的特性我們還可以用。
那麼QVector有什麼好處呢?我們可以用count函式獲知陣列中有多少個元素,方便遍歷,原先我們必須預定義好大小,而用QVector我們雖然最好也先定義好大小,但是預先不定義也可以。
我們可以使用append函式或者<<操作符來在陣列最後端新增元素而不用擔心溢位問題。
需要包含標頭檔案:
#include<QVector>
新增元素:
QVector<QString> strArray;
strArray.append("Hello"); //可以這樣
strArray<<"World!"; //也可以這樣
strArray<<"MyName"<<"is"<<"LEO";//也可以這樣加上個元素
//現在strArray總共有5個字串元素,strArray.count()==5
遍歷:
QVector<QString>::iterator iter;
for (iter=strArray.begin();iter!=strArray.end();iter++)
{
qDebug() << *iter << "\0";
}
插入:
strArray.insert(1,"這就是在hello和world之間新增");
刪除:
strArray.remove(1); //刪除第一個元素,從0開始
strArray.remove(1,3); //從1開始,刪除3個元素
複製(取代):
strArray.replace(1,"LEO"); //刪除第一個元素,從0開始
上述,除了append()和replace()這兩個函式外,其它函式會比較慢,因為在記憶體中移動一個位置時,這些函式會使向量容器內的物件要移動許多次!如果你想要一個能夠在中部快速插入和刪除的容器時,可以使用QList或者QLinkedList。
呼叫at()
呼叫data()函式也可以訪問儲存在QVector的資料。這個函式會返回指向向量容器的第一個物件的指標。這樣,你就可以使用指標來訪問和修改向量容器內的物件。你可以使用指標將一個QVector向量容器傳遞給接收普通C++陣列的函式。
contains()函式是用來查詢向量容器內是否含有某個物件。
count()函式可以找出某個物件出現的次數。
resize()函式可以在任何時候改變QVector向量容器的體積。如果新的向量容器體積比以前的要大,QVector也許需要重新分配整個向量容器。QVector會預先分配兩倍於實際資料的大小空間,從而減少再分配的次數。
reserve()函式,如果你事先知道向量容器大概包含多少個物件,你可以呼叫這個函式來預先分配一定的記憶體大小空間。capacity()函式會告訴你向量容器所佔記憶體的實際大小空間。