c ++如果共享一个数字,则组合向量

时间:2015-11-22 01:16:22

标签: c++ vector

所以我有13个不同的向量,其中包含一组数字。我想组合共享数字的向量,并删除重复项。 示例:如果我将0和1组合在一起,我不希望有两个2' s。

它们的排序方式是它们总是如何排序,因此数字2在第二组之后不会出现,但可以在它之前出现。这些数字是订购的等等。

我很困惑我会怎么做。

The sets: 
Set 0: [0,2]
Set 1: [1,2,5]
Set 2: [2]
Set 3: [3,4]
Set 4: [4]
Set 5: [5]
Set 6: [6,7,8]
Set 7: [7,9]
Set 8: [8,9]
Set 9: [9]
Set 10: [10, 11]
Set 11: [11, 12]
Set 12: [12]

2 个答案:

答案 0 :(得分:0)

试试这个:

// Outside your method, in main scope
bool contains(std::vector<int> vec, int val) {
    for(int i = 0; i < vec.size(); i++) if(vec[i] == val) return true;
    return false;
}
// Inside your method
std::vector<int> glued;
for(int i = 0; i < vector1.size(); i++) { if(!contains(glued, vector1[i])) glued.push_back(vector1[i]); }
// Repeat for all vectors

这种方法效率不高但我不知道更好。

答案 1 :(得分:0)

使用stl :: set容器。对于每个数组,将它们的值添加到stl :: set。 set容器保证只有一个数字实例。完成后,如有必要,将设备转换回矢量。