本文主要總結給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。
1.2具體執行個體
#include <QVector>
#include <algorithm>
void Widget::on_pushButton_2_clicked()
{
QVector<int> arr;
for(int i=0;i<10;i++)
arr.append(rand()%5); //添加容器資料,100以内的整數
for(int i=0;i<arr.size();i++)
{
qDebug()<<tr("原始資料:\n")<<tr("arr.at(%1)==").arg(i)<<arr.at(i);
}
std::sort(arr.begin(),arr.end()); //去重前需要排序
auto it= std::unique(arr.begin(),arr.end()); //去除容器内重複元素
arr.erase(it,arr.end());
for(int i=0;i<arr.size();i++)
{
qDebug()<<tr("排序和去重後資料:\n")<<tr("arr.at(%1)==").arg(i)<<arr.at(i);
}
}
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxCMRpnT6RzVZFDatVmdKdVYoVjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxQTMwATNwkTM4ADOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
參考内容:
http://blog.sina.com.cn/s/blog_69146f5101016tv6.html(STL中vector容器排序和去重)
https://blog.csdn.net/yongh701/article/details/51406458(STL中vector去重、查找、交并集用法)