QT unique函数
时间: 2023-08-29 09:13:33 浏览: 59
QT中的unique函数是一个模板函数,用于去除容器中的重复元素。它返回一个指向容器中不重复元素的末尾迭代器,去除的元素会被移到容器的末尾,并被截断。
函数定义:
```
template<class ForwardIt>
ForwardIt unique(ForwardIt first, ForwardIt last);
template<class ForwardIt, class BinaryPredicate>
ForwardIt unique(ForwardIt first, ForwardIt last, BinaryPredicate p);
```
其中,第一个函数的参数是一个迭代器范围[first, last),第二个函数还接受一个二元谓词p,用于比较元素是否相等。
使用示例:
```
QList<int> list{1, 2, 2, 3, 3, 3};
auto end = std::unique(list.begin(), list.end());
list.erase(end, list.end());
// list = {1, 2, 3}
QVector<QString> vec{"hello", "world", "hello", "qt"};
auto end2 = std::unique(vec.begin(), vec.end(), [](const QString& s1, const QString& s2){
return s1.size() == s2.size();
});
vec.erase(end2, vec.end());
// vec = {"hello", "world", "qt"}
```