g*******s 发帖数: 2963 | 1 一个简单的class只包含多个不同类型的data member。比如:
class Data
{ int a; float b, string c};
一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有
member都相同)。
我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by
b.......
被告知还有很多更好的方法~ |
e*****e 发帖数: 1275 | 2 直接比较内存吧?
不过因为align的问题,有可能pad里面内存是junk,那算不算dup? |
e*****e 发帖数: 1275 | 3 或者根据每种不同的class type, (要事先知道 class 的 definition)
自己找一个好的hashfunction. |
H*M 发帖数: 1268 | 4 自己写个class的比较函数
by
【在 g*******s 的大作中提到】 : 一个简单的class只包含多个不同类型的data member。比如: : class Data : { int a; float b, string c}; : 一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有 : member都相同)。 : 我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by : b....... : 被告知还有很多更好的方法~
|
m**q 发帖数: 189 | 5 因为Class Data是变长的,可以先按size分组或者排序,
然后在size相同的里面再做hash去重复?
by
【在 g*******s 的大作中提到】 : 一个简单的class只包含多个不同类型的data member。比如: : class Data : { int a; float b, string c}; : 一个数组或list包含很多个class Data的object,如何删除duplicate (就是 啊所有 : member都相同)。 : 我回答了用hashtable和分层sort,比如先sort by a,然后在duplicated a 里sort by : b....... : 被告知还有很多更好的方法~
|
k*****7 发帖数: 72 | |
k*****7 发帖数: 72 | 7 或者还是用HashSet或HashTable,把对象所有data转成String,连在一起做这个对象的
key放入set,就可以过滤掉重复的了 |
h**********d 发帖数: 4313 | 8 就是重写equals()和hashcode()把 |