c++ - 在 C++ 中将 vector 与一个或多个相似元素组合在一起

标签 c++ vector int element

你好,

我有一个逻辑问题一直困扰着我。

我有一个包含 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()
    • 使用迭代器 kl在 vector 中 *i*j , 推进 *k 中的任何一个和 *l在找到共享值或达到 end() 之前,该值较小: 如果有共享值追加 *j*i并重新排序,否则提前j

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

关于c++ - 在 C++ 中将 vector 与一个或多个相似元素组合在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119546/

相关文章:

python struct module - 解包时的奇数

c - 为什么此代码可以在 Windows 7 上的 Visual Studio 上运行,但不能在 Linux 上正常运行

c++ - 从数组复制到变量导致计算器溢出

c++ - 我如何比较 s1 和 s2 与 c++ 中的无 if 语句

c++ - 将数据从字节数组(带零)传递到 istringstream(stringstream)

c++ - 如何组合两个整数 vector

python - 重新组织Python字典中的输出数据

c++ - 为vector的删除函数实现一个拷贝构造函数

c++ - GLM Math lib 使用 GCC 编译错误

c++ - 使用 vector 进行归并排序 (int) C++