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()函數會告訴你向量容器所占內存的實際大小空間。
————————————————
版權聲明:本文為CSDN博主「三月桃花浪」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/leoeitail/article/details/74640352


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM