在 c++ 中将向量与一个或多个相似元素组合在一起

Combing vectors with one or more similar elements in c++

本文关键字:一个 相似 元素 在一起 组合 向量 c++      更新时间:2023-10-16

美好的一天,

我有一个逻辑问题,我被困住了。

我有一个包含 N 个整数的向量向量。可以将其视为一个充满整数的锯齿状数组。

例如:

vector<vector<int>> myVector

(假设,这些是向量的内容)

myVector[0] = {0,1} myVector[1] = {1,2} myVector[2] = {3,4,5}
myVector[3] = {4,5,6} myVector[4] = {7,8}

我想做的是组合共享相同元素的向量。如您所见,myvector[0]myvector[1]共享相同的元素值"1",对于myvector2 和 3 也是如此,因为它们共享相同的元素值"4"。myVector[4]保持不变,因为它不与其他向量共享任何值

我得到的产品应该是这样的

newVector[0]= {0,1,2} newVector[1]= {3,4,5,6} newVector[2]= {7,8}

请帮忙:)

一个明显而简单的方法是:

  • 如有必要,对单个vector进行预排序
  • 通过vector<vector<int>>循环i
    • 迭代器j通过i+1..end()
    • 在向量*i*j中使用迭代器kl,前进*k*l中值较小的一个,直到找到共享值或达到end():如果有共享值,则附加*j*i并重新排序,否则前进j

这可能不是最佳的解决方案性能,但您可以实现/分析它,并让我们知道您是否必须拥有更快的解决方案。