QList去重

QSet<T> QList::toSet() const

有需要,还可以转回来

QList<T> QSet::toList() const

如果typename T为自定义对象

1
2
3
4
5
6
struct T
{
qint64 size;
QString data;
QString uuid;
};

报错:

1
2
QList<T> list;
list.toSet(); // error: C2665: "qHash" balabala

因为自定义对象需要提供全局operator==()和一个全局qHash()

补充定义:

1
2
inline bool operator==(const T& left, const T& right) { return left.uuid == right.uuid; }
Q_DECL_PURE_FUNCTION inline int qHash(const T& key, uint seed = 0) Q_DECL_NOTHROW { return qHash(key.uuid, seed); }

验证一下:

1
list.toSet(); // ok
作者

tty

发布于

2023-04-13

更新于

2023-08-02

许可协议