日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT,QVector 基本用法,遍历[实例讲解]

發布時間:2025/4/5 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 基本用法,遍历[实例讲解]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。