这个问题让我抓狂。我有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]);
}


返回很重要,因为否则索引将不同步。

10-08 12:37