QList<HoleBasicdata>a中有相同的数据,如何去掉相同的只留一个
时间: 2024-10-23 19:06:40 浏览: 13
custom-list-model.zip_List<Custom> list_list qt_qt list_qt lis
在Qt中,如果你有一个`QList<HoleBasicdata>`类型的容器,并希望去除其中重复的数据,你可以使用`QList`自带的去重功能,或者先将其转换为`QSet`或者` QVector`(无序且不允许重复),然后转回`QList`。这里有两个方法:
**方法一:利用哈希集合(QSet)**
```cpp
QSet<HoleBasicdata> uniqueData;
for (const HoleBasicdata &item : a) {
if (!uniqueData.contains(item)) {
uniqueData << item;
}
}
QList<HoleBasicdata> uniqueList(uniqueData.begin(), uniqueData.end());
```
这将创建一个新的`QList`,其中包含了`a`列表中的唯一元素。
**方法二:利用排序+插入**
```cpp
QList<HoleBasicdata> uniqueList(a.size());
std::sort(a.begin(), a.end()); // 或者自定义排序规则
size_t i = 0;
for (const HoleBasicdata &item : a) {
if (i == 0 || item != a[i - 1]) { // 检查是否与前一项不同
uniqueList[i++] = item;
}
}
uniqueList.resize(i); // 确保列表大小正确
```
这个方法首先排序列表,然后遍历并插入唯一项。
阅读全文