1. 程式人生 > >QT,QVector 基本用法,遍歷[例項講解]

QT,QVector 基本用法,遍歷[例項講解]

        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()

函式來讀取物件會比使用operator[]()讀取速度更快,因為這不會使用深度複製(deep copy)。

呼叫data()函式也可以訪問儲存在QVector的資料。這個函式會返回指向向量容器的第一個物件的指標。這樣,你就可以使用指標來訪問和修改向量容器內的物件。你可以使用指標將一個QVector向量容器傳遞給接收普通C++陣列的函式。

contains()函式是用來查詢向量容器內是否含有某個物件。

count()函式可以找出某個物件出現的次數。

resize()函式可以在任何時候改變QVector向量容器的體積。如果新的向量容器體積比以前的要大,QVector也許需要重新分配整個向量容器。QVector會預先分配兩倍於實際資料的大小空間,從而減少再分配的次數。

reserve()函式,如果你事先知道向量容器大概包含多少個物件,你可以呼叫這個函式來預先分配一定的記憶體大小空間。

capacity()函式會告訴你向量容器所佔記憶體的實際大小空間。