天天看點

QVector容器内元素排序和去重簡單用法(sort、vector、unique、erase)

本文主要總結給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);
    }
}
           
QVector容器内元素排序和去重簡單用法(sort、vector、unique、erase)

參考内容:

http://blog.sina.com.cn/s/blog_69146f5101016tv6.html(STL中vector容器排序和去重)

https://blog.csdn.net/yongh701/article/details/51406458(STL中vector去重、查找、交并集用法)