------------恢復內容開始------------
本文主要總結給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