这个问题让我抓狂。我有vectorA(float),vectorB(string1),vectorC(string2)这两个是并行的,我想消除vectorA中的重复项,同时我设法保留了
向量之间的平行性。
有任何想法吗?
最佳答案
为看到的项创建一个set<float>
,浏览vectorA
记录重复的索引,然后删除从矢量的末尾开始时标记为重复的索引。
Set<Float> seen = new HashSet<Float>();
List<Integer> del = new List<Integer>();
for (int i = 0 ; i != vectorA.size() ; i++) {
if (seen.add(vectorA[i])) {
del.add(i);
}
}
for (int i = del.size()-1 ; i >= 0 ; i--) {
vectorA.remove(del[i]);
vectorB.remove(del[i]);
vectorC.remove(del[i]);
}
返回很重要,因为否则索引将不同步。