你好,
我有一个逻辑问题一直困扰着我。
我有一个包含 N 个整数的 vector vector 。将其想象成一个充满整数的锯齿状数组。
例如:
vector<vector<int>> myVector
(比方说,这些是 vector 的内容)
myVector[0] = {0,1} myVector[1] = {1,2} myVector[2] = {3,4,5}
myVector[3] = {4,5,6} myVector[4] = {7,8}
我想做的是合并共享相同元素的 vector 。如您所见,myvector[0]
和 myvector[1]
共享相同的元素值“1”,对于 myvector
也是如此2 和 3,因为它们共享相同的元素值“4”。 myVector[4]
保持不变,因为它不与其他 vector 共享任何值
我的结果应该是这样的
newVector[0]= {0,1,2} newVector[1]= {3,4,5,6} newVector[2]= {7,8}
请帮忙:)
最佳答案
一个明显而简单的方法是:
- 对个体进行预分类
vector
如有必要 - 迭代
i
通过vector<vector<int>>
- 迭代器
j
通过i+1
..end()
- 使用迭代器
k
和l
在 vector 中*i
和*j
, 推进*k
中的任何一个和*l
在找到共享值或达到end()
之前,该值较小: 如果有共享值追加*j
至*i
并重新排序,否则提前j
- 迭代器
这可能不是性能方面的最佳解决方案,但您可以实现/分析它并让我们知道您是否需要更快的解决方案。
关于c++ - 在 C++ 中将 vector 与一个或多个相似元素组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119546/