【问题标题】:Remove duplicate elements from 2 separate arrays从 2 个单独的数组中删除重复元素
【发布时间】:2018-06-08 07:03:38
【问题描述】:

我将如何从 2 个数组中减去元素?

我的 array_1[5] 数组包含元素 {1, 2, 3, 4, 5}array_2[3] 元素 {2, 3, 5}。在数学课上,我被认为只需要减去{1, 4} 留下的组。我试过减去像整数这样的数组,但我不知道如何正确使用索引。我也尝试过排序和第二个数组,然后检查它们的索引是否相等,但这不起作用。

如何在 C++ 中完成这项工作?

【问题讨论】:

标签: c++ arrays subtraction


【解决方案1】:

您正在寻找两个集合之间的区别,这是standard algorithms 之一

#include <algorithm>
#include <vector>
#include <iterator>

int array_1[] = { 1, 2, 3, 4, 5 };
int array_2[] = { 2, 3, 5 };

std::vector<int> difference;

std::set_difference(std::begin(array_1), std::end(array_1), std::begin(array_2), std::end(array_2), std::back_inserter(difference));

// difference now contains { 1, 4 }

根据您的 cmets,我建议您将数组设置为 std::vectors。然后就变得简单了。

std::vector<int> array_1 = { 1, 2, 3, 4, 5 };
std::vector<int> array_2 = { 2, 3, 5 };

std::set_difference(array_1.begin(), array_1.end(), array_2.begin(), array_2.end(), std::back_inserter(difference));

【讨论】:

  • 是的,你可以。您是否使用 C++11 支持进行编译,因为我的答案使用了当时介绍的 std::begin/end。有什么错误?
  • 使用开关编译-std=c++11
  • 信息太少意味着我无法为您解决此问题。请参阅我的编辑以获取替代方法。
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 2011-07-03
  • 1970-01-01
  • 2016-07-13
  • 2020-08-09
  • 2010-10-13
相关资源
最近更新 更多