本文主要总结给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);
}
}
参考内容:
http://blog.sina.com.cn/s/blog_69146f5101016tv6.html(STL中vector容器排序和去重)
https://blog.csdn.net/yongh701/article/details/51406458(STL中vector去重、查找、交并集用法)