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()函數會告訴你向量容器所占內存的實際大小空間。
總結
以上是生活随笔為你收集整理的QT,QVector 基本用法,遍历[实例讲解]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT 使用全局变量的方法
- 下一篇: QT中如何才能使用cos,sin等三角函