QVector容器內元素排序和去重簡單用法


------------恢復內容開始------------

本文主要總結給Qt的QVector容器內元素排序和去重,下面是關鍵函數總結。

1.1核心函數講解

Qt中的QVector容器用法跟STL中的vector容器基本一樣。本文是先建立一個容器,然后隨機填充十個0-5內整數,接着用算法對QVetor容器內的元素進行排序和去重。

其中,算法的關鍵是先對容器元素進行排序才能去重。排序用STL的sort()函數,去重用STL的unique()函數和erase()兩個函數搭配使用。

算法步驟總結如下:

a1 用sort函數排序;

a2 用unique函數進行去重,unique函數返回容器中重復元素的迭代器的首地址iter;

a3 配合erase函數,擦除iter首地址,終點是容器末尾arr.end。

unique是 c++標准模板庫STL中十分實用的函數之一,使用此函數需要:

#include <algorithm>

 該函數的作用是“去除”容器或者數組中相鄰元素的重復出現的元素,注意 

(1) 這里的去除並非真正意義的erase,而是將重復的元素放到容器的末尾,返回值是去重之后的尾地址。 
(2) unique針對的是相鄰元素,所以對於順序順序錯亂的數組成員,或者容器成員,需要先進行排序,可以調用std::sort()函數

1.2具體實例

// sort & duplicate removal
std::sort(timedata.begin(), timedata.end());
auto unitime = std::unique(timedata.begin(), timedata.end());
timedata.erase(unitime, timedata.end()); // erase the repeat elements

 


免責聲明!

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



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