天天看点

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去重、查找、交并集用法)